[英]twitter4j OAuth Android
已經實現了處理這種新型身份驗證Twitter的常規方法。 我認為我沒有正確執行此操作,現在我有此活動:
因此,為了驗證應用程序的用戶,他們必須通過單擊“獲取圖釘”按鈕來獲取必須獲取的圖釘。
它具有以下代碼:
@
Override
protected String doInBackground(Void...params) {
String s = null;
twitter = TwitterFactory.getSingleton();
twitter.setOAuthConsumer("XXXX", "XXXXX");
try {
requestToken = twitter.getOAuthRequestToken();
s = requestToken.getAuthorizationURL();
} catch (TwitterException e) {
e.printStackTrace();
}
return s;
}
@
Override
protected void onPostExecute(String url) {
Intent intent = new Intent(AuthenticateActivity.this, Oauth_web_view.class);
intent.putExtra("url", url);
startActivity(intent);
}
}
這將他們帶到另一個活動,僅是一個Webview,並讓他們獲取密碼,輸入密碼后,他們必須提交密碼,然后按“提交密碼”按鈕即可。
class AddUserCreds extends AsyncTask < Void, String, String > {
@
Override
protected String doInBackground(Void...urls) {
//String url = urls[0];
String pin = txtPin.getText().toString();
System.out.println(pin);
// try{
// if(pin.length() > 0){
try {
accessToken = twitter.getOAuthAccessToken(requestToken, pin);
// Shared Preferences
Editor e = mSharedPreferences.edit();
// After getting access token, access token secret
// store them in application preferences
e.putString("PREF_KEY_OAUTH_TOKEN", accessToken.toString());
// Store login status - true
e.putBoolean("PREF_KEY_TWITTER_LOGIN", true);
e.commit(); // save changes
Log.e("Twitter OAuth Token", "> " + accessToken.getToken());
} catch (TwitterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// }
// } catch (TwitterException te) {
// if(401 == te.getStatusCode()){
// // System.out.println("Unable to get the access token.");
// }else{
// te.printStackTrace();
// }
// }
return "done";
//
}
@
Override
protected void onPostExecute(String url) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(AuthenticateActivity.this);
alertDialogBuilder.setMessage("You've been authenticated" + url);
alertDialogBuilder.show();
}
它曾經工作過,並且將我的twitter開發帳戶添加到了我創建的假帳戶中,但是現在,如果我再次運行它,它會因為已通過身份驗證而中斷。 有沒有辦法測試我是否已經通過身份驗證? 這樣他們就不必經歷這個過程嗎? 是否有更簡化的認證過程?
我要做的是首先從首選項中讀取auth toekn / secret(我已經在第一次身份驗證期間保存了該密碼,就像您已經做的那樣),如果我看到它已保存,則使用它而不是執行其他身份驗證嘗試。 請參閱下面的代碼片段,希望對您有所幫助:
String authToken = prefs.getString(PREF_TWITTER_ACCESS_TOKEN, null);
String authTokenSecret = prefs.getString(PREF_TWITTER_ACCESS_TOKEN_SECRET, null);
if (authToekn == null)
{
//... perform auth
}
else //we're ready to go
{
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey(APIKEY)
.setOAuthConsumerSecret(APISECRET)
.setOAuthAccessToken(authToken)
.setOAuthAccessTokenSecret(authTokenSecret);
twitterConnection = new TwitterFactory(cb.build()).getInstance();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.