android - Twitter Oauth 回调 getOAuthRequestToken null

标签 android twitter twitter-oauth twitter4j

我在这里使用应用程序的示例 https://github.com/itog/Twitter4j-android-Sample它正在工作。我在我的应用程序中使用了相同的方法,但当我在线时它返回 null

static final String CALLBACK_URL = "oauth://t4jsample"; [Copy the same as the Sample]
requestToken = twitter.getOAuthRequestToken(CALLBACK_URL);

这是我的 list

<activity
        android:name="com.my.app.SharePreviewActivity"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.Fullscreen"
        android:windowSoftInputMode="stateAlwaysHidden|adjustPan" >

        <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:host="t4jsample"
                android:scheme="oauth" />
        </intent-filter>
    </activity>

这是我从示例应用程序中复制的其他代码。

private void askOAuth() {
    ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
    configurationBuilder.setOAuthConsumerKey(CONSUMER_KEY);
    configurationBuilder.setOAuthConsumerSecret(CONSUMER_SECRET);
    Configuration configuration = configurationBuilder.build();
    twitter = new TwitterFactory(configuration).getInstance();

    try {
        requestToken = twitter.getOAuthRequestToken(CALLBACK_URL);
        Toast.makeText(this, "Please authorize this app!",
                Toast.LENGTH_LONG).show();
        this.startActivity(new Intent(Intent.ACTION_VIEW, Uri
                .parse(requestToken.getAuthenticationURL())));
    } catch (TwitterException e) {
        e.printStackTrace();
    }
}

日志:

09-17 16:37:40.528: W/System.err(21125):    at twitter4j.HttpClientBase.request(HttpClientBase.java:53)
09-17 16:37:40.528: W/System.err(21125):    at twitter4j.HttpClientBase.post(HttpClientBase.java:82)
09-17 16:37:40.529: W/System.err(21125):    at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:107)
09-17 16:37:40.530: W/System.err(21125):    at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:92)
09-17 16:37:40.531: W/System.err(21125):    at twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:263)
09-17 16:37:40.532: W/System.err(21125):    at com.PhotoPreviewActivity.askOAuth(PPActivity.java:320)
09-17 16:37:40.532: W/System.err(21125):    at com.my.onShareTwitter(com.my.java:298)
09-17 16:37:40.533: W/System.err(21125):    at java.lang.reflect.Method.invokeNative(Native Method)
09-17 16:37:40.534: W/System.err(21125):    at java.lang.reflect.Method.invoke(Method.java:511)
09-17 16:37:40.535: W/System.err(21125):    at android.view.View$1.onClick(View.java:3687)
09-17 16:37:40.535: W/System.err(21125):    at android.view.View.performClick(View.java:4299)
09-17 16:37:40.536: W/System.err(21125):    at android.view.View$PerformClick.run(View.java:17549)
09-17 16:37:40.537: W/System.err(21125):    at android.os.Handler.handleCallback(Handler.java:725)
09-17 16:37:40.538: W/System.err(21125):    at android.os.Handler.dispatchMessage(Handler.java:92)
09-17 16:37:40.539: W/System.err(21125):    at android.os.Looper.loop(Looper.java:153)
09-17 16:37:40.539: W/System.err(21125):    at android.app.ActivityThread.main(ActivityThread.java:5322)
09-17 16:37:40.540: W/System.err(21125):    at java.lang.reflect.Method.invokeNative(Native Method)
09-17 16:37:40.540: W/System.err(21125):    at java.lang.reflect.Method.invoke(Method.java:511)
09-17 16:37:40.541: W/System.err(21125):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:848)
09-17 16:37:40.541: W/System.err(21125):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615)
09-17 16:37:40.541: W/System.err(21125):    at dalvik.system.NativeStart.main(Native Method)
09-17 16:37:40.541: I/System.out(21125): [CDS] fix other exception in HttpUrlConnection
09-17 16:37:40.543: W/System.err(21125): null
09-17 16:37:40.543: W/System.err(21125): Relevant discussions can be found on the Internet at:
09-17 16:37:40.543: W/System.err(21125):    http://www.google.co.jp/search?q=8e063946 or
09-17 16:37:40.543: W/System.err(21125):    http://www.google.co.jp/search?q=c60cdc59
09-17 16:37:40.544: W/System.err(21125): TwitterException{exceptionCode=[8e063946-c60cdc59 8e063946-c60cdc2f], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=4.0.2}

最佳答案

经过一番挣扎,我设法发现我忘记了

  • 勾选了 twitter jar 库(我真傻!)
  • 增加了 HTTP 的安全性

您需要为您的应用设置最低可用的 sdk

if (android.os.Build.VERSION.SDK_INT > 8) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }

瞧,它会起作用的。

关于android - Twitter Oauth 回调 getOAuthRequestToken null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25797351/

相关文章:

Twitter API - 如何查找我开始关注某人的日期

java - 如何在 android 中隐藏翻译器 API key

java - 具有多个适配器和 View 类型的 Recycler View 不工作

java - 如何从 Arduino 接收数据?

java - 使用 twitter4j 和 java 获取所有用户时间线推文

twitter - 使用 Google Apps 脚本将推文发布到我的供稿

java - 创建 twitterstream 时出现 401 错误

推特 API : timestamp out of Bounds when calling oauth request_token

android - Android 移动应用程序的默认 Google Analytics session 超时是多少?

twitter - 当您不知道 user.screen_name 时如何链接到特定推文?