मैं अपने एंड्रॉइड ऐप के लिए ओएथ स्थापित कर रहा हूं। इसका परीक्षण करने के लिए मैंने निम्नलिखित किया: मेरे प्रोजेक्ट में साइनपॉस्ट-कोर-1.2.1.1.jar और साइनपॉस्ट-कॉमन्सhttp4-1.2.1.1.jar जोड़ा गया, "CommonsHttpOAuthConsumer उपभोक्ता" और "CommonsHttpOAuthProvider प्रदाता" चर को जोड़ा और निम्न कार्य किया बटन क्लिक किया जाता है:एंड्रॉइड ओएथ: पुनर्प्राप्ति पर अपवाद AccessToken()
consumer = new CommonsHttpOAuthConsumer("xxx", "yyy");
provider = new CommonsHttpOAuthProvider("https://api.twitter.com/oauth/request_token",
"https://api.twitter.com/oauth/access_token",
"https://api.twitter.com/oauth/authorize");
oauthUrl = provider.retrieveRequestToken(consumer, "myapp://twitterOauth");
persistOAuthData();
this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(oauthUrl)));
persistOAuthData() करता है निम्नलिखित:
protected void persistOAuthData()
{
try
{
FileOutputStream providerFOS = this.openFileOutput("provider.dat", MODE_PRIVATE);
ObjectOutputStream providerOOS = new ObjectOutputStream(providerFOS);
providerOOS.writeObject(this.provider);
providerOOS.close();
FileOutputStream consumerFOS = this.openFileOutput("consumer.dat", MODE_PRIVATE);
ObjectOutputStream consumerOOS = new ObjectOutputStream(consumerFOS);
consumerOOS.writeObject(this.consumer);
consumerOOS.close();
}
catch (Exception e) { }
}
तो, उपभोक्ता और प्रदाता ब्राउज़र को खोलने से पहले सहेजे जाते हैं, here वर्णित की तरह।
विधि onResume() में मैं प्रदाता और उपभोक्ता डेटा लोड और निम्न कार्य करें:
Uri uri = this.getIntent().getData();
if (uri != null && uri.getScheme().equals("myapp") && uri.getHost().equals("twitterOauth"))
{
verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);
if (!verifier.equals(""))
{
loadOauthData();
try
{
provider.retrieveAccessToken(consumer, verifier);
}
catch (OAuthMessageSignerException e) {
e.printStackTrace();
} catch (OAuthNotAuthorizedException e) {
e.printStackTrace();
} catch (OAuthExpectationFailedException e) {
e.printStackTrace();
} catch (OAuthCommunicationException e) {
e.printStackTrace();
}
}
}
तो, क्या काम करता है: 1) मैं एक requestToken और एक requestSecret मिलता है। 2) मुझे oauthUrl मिलता है। 3) मुझे अपने ऐप 4 को अधिकृत करने के लिए ब्राउज़र पेज पर निर्देशित किया गया है) मुझे अपने ऐप पर रीडायरेक्ट किया जा रहा है। 5) मुझे सत्यापनकर्ता मिल गया है। लेकिन पुनर्प्राप्ति को एक्सेस करना AccessToken (उपभोक्ता, सत्यापनकर्ता) OAuthCommunicationException के साथ विफल रहता है, "सेवा प्रदाता के साथ संचार विफल: शून्य"।
क्या किसी को पता है कि कारण क्या हो सकता है? कुछ लोगों को अनुरोध प्राप्त करने में समस्याएं लगती हैं, लेकिन यह ठीक काम करता है। मुझे आश्चर्य है कि यह एक समस्या हो सकती है कि मेरे ऐप में apache-mime4j-0.6.jar और httpmime-4.0.1.jar भी शामिल है जो मुझे मल्टीपार्ट अपलोड के लिए चाहिए।
बहुत बहुत शुक्रिया ... इस मेरी समस्या हल ... महान काम मैनुअल – Panache
तो आपके मामले में, 'requestToken' जिसे आपने 'consumer.setOkenWithSecret' में सेट किया है 'oauthUrl' है? और क्या मैं पूछ सकता हूं कि 'टोकनसेक्रेट' क्या है? धन्यवाद :) – dumbfingers
क्षमा करें, मुझे लगता है कि मैं इसे समझ सकता हूं, 'request.getToken()' का उपयोग कर 'अनुरोध टोकन' पुनर्प्राप्त किया गया है? – dumbfingers