簡體   English   中英

twitter4j OAuth Android

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM