Why the method getOAuthAccessToken always fire the exception in the twitter4j api?

前端 未结 2 1985
一整个雨季
一整个雨季 2020-12-31 11:56

I\'m following a lot of instructions to make a simple tweet from my app. I\'ve already registered it on Twitter, but I just can\'t make a tweet. I can login, but not update

相关标签:
2条回答
  • 2020-12-31 12:16

    I've gone an solved it myself, only took 4 hours!!

    I'm not 100% sure on the reasoning, but I know the fix works.

    Fix:

    In your manifest for this Activity you need to make it a single instance:

     <activity
            android:name=".TwitterTweetActivity"
            android:launchMode="singleInstance">
            <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="your-unique-schema-01-android" />
            </intent-filter>
        </activity>
    

    Now when your Activity resumes you need to catch it coming back from the browser with onNewIntent() like so:

     @Override
    protected void onResume() {
        super.onResume();
        dealWithTwitterResponse(getIntent());
    }
    

    Replaced with:

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        dealWithTwitterResponse(intent);
    }
     
    

    And it should work!

    Reasoning (correct me if I'm wrong):

    So the problem is your rToken object isn't the same object it was when created...

    When you create your Twitter instance and get the rToken object this is in your activity. The activity then goes into the background (onPause) whilst the browser comes up for the user to login.

    When the activity is recreated the rToken object is different therefore this is why the getOAuthAccessToken() method throws the error.

    Extra Credit:

    I've just written a Tutorial to match: How to send Tweets on Android from a Users Acc

    0 讨论(0)
  • 2020-12-31 12:21

    The reason is that after the authentication returns, you created another instance of the activity and used rToken in its onResume method, which is null.

    0 讨论(0)
提交回复
热议问题