[英]Android Twitter4J retrieve OAuth and oauth_token_secret automatically?
我已經在Android應用程序中實現了Twitter4J,並且工作正常。 但是,當我使用Twitter登錄頁面登錄后,它要求用戶手動輸入PIN碼。
在Twitter4J類中,有一種方法可以檢索和存儲OAuth和oauth_token_secret(進入共享首選項)。
/**
* Retrieve the oauth_verifier, and store the oauth and oauth_token_secret
* for future API calls.
*/
@Override
protected Void doInBackground(Uri...params) {
final Uri uri = params[0];
final String oauth_verifier = uri.getQueryParameter(OAuth.OAUTH_VERIFIER);
try {
provider.retrieveAccessToken(consumer, oauth_verifier);
final Editor edit = prefs.edit();
edit.putString(OAuth.OAUTH_TOKEN, consumer.getToken());
edit.putString(OAuth.OAUTH_TOKEN_SECRET, consumer.getTokenSecret());
edit.commit();
String token = prefs.getString(OAuth.OAUTH_TOKEN, "");
String secret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, "");
consumer.setTokenWithSecret(token, secret);
context.startActivity(new Intent(context,MainAct.class));
executeAfterAccessTokenRetrieval();
Log.i(TAG, "OAuth - Access Token Retrieved");
} catch (Exception e) {
Log.e(TAG, "OAuth - Access Token Retrieval Error", e);
}
return null;
}
清單-PrepareRequestTokenActivity
<activity android:name=".PrepareRequestTokenActivity" android:launchMode="singleTask">>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="x-oauthflow-twitter" android:host="callback" />
</intent-filter>
</activity>
我不明白為什么它不檢索OAUTH_TOKEN
和OAUTH_SECRET
。 如何在不輸入PIN碼的情況下進行授權? 難道我做錯了什么?
請幫我。
謝謝
嘿,這段代碼可能會有所幫助,
AccessToken accessToken = getAccessToken();
Configuration conf = new ConfigurationBuilder()
.setOAuthConsumerKey(TwitterConstants.CONSUMER_KEY)
.setOAuthConsumerSecret(TwitterConstants.CONSUMER_SECRET)
.setOAuthAccessToken(accessToken.getToken())
.setOAuthAccessTokenSecret(accessToken.getTokenSecret())
.build();
OAuthAuthorization auth = new OAuthAuthorization(conf,
conf.getOAuthConsumerKey(), conf.getOAuthConsumerSecret(),
new AccessToken(conf.getOAuthAccessToken(),
conf.getOAuthAccessTokenSecret()));
並獲取AccessToken,
public AccessToken getAccessToken() {
String token = prefs.getString(OAuth.OAUTH_TOKEN, "");
String tokenSecret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, "");
if (token != null && tokenSecret != null)
return new AccessToken(token, tokenSecret);
else
return null;
}
您可以嘗試以下示例,而不是執行基於PIN的身份驗證:https://github.com/ddewaele/AndroidTwitterSample
我解決了這個問題。 回調網址有問題。
我像這樣編輯常量,它起作用了。
public static final String OAUTH_CALLBACK_SCHEME = "x-oauthflow-twitter";
public static final String OAUTH_CALLBACK_HOST = "callback";
public static final String OAUTH_CALLBACK_URL = OAUTH_CALLBACK_SCHEME + "://" + OAUTH_CALLBACK_HOST;
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.