2017-06-13 121 views
-1

我最近在我的android studio中添加了fabric插件,但是我沒有在該插件上找到twitter登錄選項。當我在谷歌搜索,然後我發現一個question面料最近刪除twitter登錄工具包。所以我整合了twitterkit使用twitter official documentation。 我整合twitterkit和實現代碼根據twitter developer site,但我面臨的問題。com.twitter.sdk.android.core.TwitterApiException:HTTP請求失敗,狀態:403

這是錯誤日誌:

E/Twitter: Failed to get app auth token 
com.twitter.sdk.android.core.TwitterApiException: HTTP request failed, Status: 403 
at com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42) 
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) 
at android.os.Handler.handleCallback(Handler.java:751) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6209) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

Authorization completed with an error 
com.twitter.sdk.android.core.TwitterAuthException: Authorize failed. 
at com.twitter.sdk.android.core.identity.AuthHandler.handleOnActivityResult(AuthHandler.java:98) 
at com.twitter.sdk.android.core.identity.TwitterAuthClient.onActivityResult(TwitterAuthClient.java:161) 
at com.twitter.sdk.android.core.identity.TwitterLoginButton.onActivityResult(TwitterLoginButton.java:131) 
at in.crazyfingers.cyny.social_login.ActivitySocialSignIn.onActivityResult(ActivitySocialSignIn.java:305) 
at android.app.Activity.dispatchActivityResult(Activity.java:7007) 
at android.app.ActivityThread.deliverResults(ActivityThread.java:4173) 
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4220) 
at android.app.ActivityThread.-wrap20(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1559) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6209) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

我已經檢查Question 1Question 2和其他許多問題這是關係到這個問題,但它不是爲我工作。幫助將不勝感激。提前致謝。

這是我的應用程序級的build.gradle文件

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     applicationId "com.twitter" 
     minSdkVersion 15 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.3.1' 
    testCompile 'junit:junit:4.12' 

    // Include all the Twitter APIs 
    compile 'com.twitter.sdk.android:twitter:3.0.0' 

} 

這是我CustomApplication.Java文件。

public class CustomApplication extends Application 
{ 
    public void onCreate() { 
     Twitter.initialize(this); 
    } 
} 

這是我TwitterLogin.java文件

public class TwitterLogin extends AppCompatActivity 
{ 
    public static final String TAG = "[TwitterLogin]"; 

    private String TWITTER_KEY = "here my app twitter key"; 
    private String TWITTER_SECRET = "here my app secret key"; 

    private TwitterLoginButton loginButton; 
    private TextView status; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_twitter_login); 

     TwitterConfig config = new TwitterConfig.Builder(this) 
       .logger(new DefaultLogger(Log.DEBUG)) 
       .twitterAuthConfig(new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET)) 
       .debug(true) 
       .build(); 
     Twitter.initialize(config); 

     loginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_button); 
     loginButton.setCallback(new LoginHandler()); 
    } 

    private class LoginHandler extends Callback<TwitterSession> { 
     @Override 
     public void success(Result<TwitterSession> twitterSessionResult) { 

      String output = "Status: " + 
         "Your login was successful " + 
         twitterSessionResult.data.getUserName() + 
         "nAuth Token Received: " + 
         twitterSessionResult.data.getAuthToken().token; 

      Log.e(TAG, "twitterSessionResult : " + output);  
     } 
     @Override 
     public void failure(TwitterException e) { 
      status.setText("Status: Login Failed"); 
     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     // Pass the activity result to the login button. 
     loginButton.onActivityResult(requestCode, resultCode, data); 
    } 
} 
+0

親愛的選民可以請你告訴我你爲什麼給我投票嗎? – Shailesh

回答

4

我已經搜查了一整天,我發現下面的解決方案。我不知道,但它對我來說工作得很好。

我從Application.java文件註釋此行。

//Twitter.initialize(this); 

我已經初始化了如下的Twitter SDK,它對我很有用。

//Initialize twitter SDK 
TwitterConfig config = new TwitterConfig.Builder(this) 
       .logger(new DefaultLogger(Log.DEBUG)) 
       .twitterAuthConfig(new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET)) 
       .debug(true) 
       .build(); 
Twitter.initialize(config); 

在twitter按鈕上設置callback如下所示。

loginButton.setCallback(new TwitterLogin.LoginHandler()); 
相關問題