在运行Android M的设备上无法获取请求令牌

19

Twitter登录在Android 6.0预览设备上失败。在其他所有设备上都可以正常工作。

以下代码用于使用Twitter初始化织物。

TWITTER_KEY和TWITTER_SECRET密钥是从Twitter应用程序设置中获取的。

    TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
    Fabric.with(this, new Twitter(authConfig));

这是我在使用TwitterApiClient登录时收到的错误日志。

  08-31 07:52:09.988 4692-4692/? E/Twitter: Failed to get request token
  08-31 07:52:09.988 4692-4692/? E/Twitter: com.twitter.sdk.android.core.TwitterApiException: 401 Authorization Required
  08-31 07:52:09.988 4692-4692/? E/Twitter: at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:383)
  08-31 07:52:09.988 4692-4692/? E/Twitter: at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
  08-31 07:52:09.988 4692-4692/? E/Twitter: at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)
  08-31 07:52:09.988 4692-4692/? E/Twitter: at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
  08-31 07:52:09.988 4692-4692/? E/Twitter: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
  08-31 07:52:09.988 4692-4692/? E/Twitter: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
  08-31 07:52:09.988 4692-4692/? E/Twitter: at retrofit.Platform$Android$2$1.run(Platform.java:142)
  08-31 07:52:09.988 4692-4692/? E/Twitter: at java.lang.Thread.run(Thread.java:818)
  08-31 07:52:10.000 4692-4692/? E/Twitter: Authorization completed with an error
  08-31 07:52:10.000 4692-4692/? E/Twitter: com.twitter.sdk.android.core.TwitterAuthException: Failed to get request token
  08-31 07:52:10.000 4692-4692/? E/Twitter: at com.twitter.sdk.android.core.identity.OAuthController$1.failure(OAuthController.java:95)
  08-31 07:52:10.000 4692-4692/? E/Twitter: at com.twitter.sdk.android.core.internal.oauth.OAuth1aService$1.failure(OAuth1aService.java:215)
  08-31 07:52:10.000 4692-4692/? E/Twitter: at com.twitter.sdk.android.core.Callback.failure(Callback.java:45)
  08-31 07:52:10.000 4692-4692/? E/Twitter: at retrofit.CallbackRunnable$2.run(CallbackRunnable.java:53)
  08-31 07:52:10.000 4692-4692/? E/Twitter: at android.os.Handler.handleCallback(Handler.java:739)
  08-31 07:52:10.000 4692-4692/? E/Twitter: at android.os.Handler.dispatchMessage(Handler.java:95)
  08-31 07:52:10.000 4692-4692/? E/Twitter: at android.os.Looper.loop(Looper.java:148)
  08-31 07:52:10.000 4692-4692/? E/Twitter: at android.app.ActivityThread.main(ActivityThread.java:5417)
  08-31 07:52:10.000 4692-4692/? E/Twitter: at java.lang.reflect.Method.invoke(Native Method)
  08-31 07:52:10.000 4692-4692/? E/Twitter: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
  08-31 07:52:10.000 4692-4692/? E/Twitter: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

有时在开发者控制台中,您是否通过电子邮件进行身份验证?请确认一下。同时,请检查虚拟设备和真实设备...!!! - Dhruv Raval
9个回答

31

在使用这个方法之前,我试过一个有效的url(甚至是google.com)。但在我的情况下,它没有起作用。

然后我找到了这个解决方案,对我很管用:

步骤1:登录https://apps.twitter.com/并选择设置选项卡,然后将twittersdk://添加为回调URL。 (我在lib类中找到了它。)

步骤2:保存更新。

步骤3:再次尝试您的应用程序。


请不要在多个旧问题中重复发布相同的答案。如果您认为它们是重复的,请标记为重复。https://stackoverflow.com/questions/30511345/twitter-failed-to-get-request-token/50907869#50907869 - 4b0
意图是让用户即使在访问此帖子时也能获得答案。 - Moinkhan
@Shree和这个问题不同,但对于当前的情况解决方案是相同的。但在未来可能会有所不同。 - Moinkhan
@Moinkhan 谢谢您 - Bipin Bharti
@Moinkhan 谢谢你 - Hoa.Tran
1
感谢 @Moinkhan - Daniel Barde

29

以下是您需要做的事情

Twitter开发者账号->设置->回调URL

然后,如果您要为Android(即使用Android设备登录)进行操作

twittersdk://
(在回调中添加此内容)

如果您要为iOS(即使用苹果设备登录)进行操作

twitterkit-CONSUMERKEY://
(在回调中添加此内容)

点击“更新设置”按钮,即可生效:)


9

我遇到了同样的问题并且已经解决。在我的情况下,我需要在Twitter开发者账户中设置回调URL。

Twitter开发者账户 -> 设置 -> 回调URL(设置任何有效的URL,如www.google.com)


我已经做了,但是出现了以下错误:com.twitter.sdk.android.core.TwitterAuthException: Failed to get request token。这个错误的原因是我没有安装 Twitter 应用程序。如果我安装了应用程序,那么它就可以正常工作。我该怎么办? - Rajat
1
@Rajat 我也遇到了同样的问题,而且只出现在 SDK.M 设备上.......... 请有人帮忙.......... - Ramaraju

7

当 Twitter 授权未使用应用程序时,这是最佳解决方案。我尝试过有效的 Firebase 授权回调 URL 但无法工作,我也经过很多搜索,但没有得到确切的解决方案。 @Moinkhan 的解决方案对我很有帮助,节省了我的时间,感谢 @Moinkhan,它能正常工作。

在此解决方案之前,我尝试了有效的 URL,甚至 google.com,但对于我的情况,它无法工作。

我发现下面的解决方案对我很有效:

步骤 1:转到您的 Twitter 应用程序设置https://apps.twitter.com/ >> 标签设置 >> 在回调 URL 字段中填写“twittersdk://”(我在 lib 类中找到它)

步骤 2:保存您的更新

步骤 3:再次检查您的应用程序


你救了我的一天。我想如果没有“twittersdk://”,这个功能就无法正常工作了吧?你在使用Firebase UI吗? - John T

4
我之前也遇到了同样的问题。

前往Twitter应用管理 ->
点击你正在使用的“应用程序” ->
点击“设置”选项卡 ->
1)回调URL:插入任何有效的URL(例如您网站的主页)
2)启用回调锁定(建议启用回调锁定以确保应用程序无法覆盖回调URL):请验证它未选中

如果未找到Twitter应用程序,Twitter Kit尝试使用Webview
Twitter Kit的Webview部分需要覆盖回调URL

回调URL字段的信息清楚地说明:要限制应用程序使用回调,请将此字段留空。
因此,我们需要写下任何有效的URL :)

参考资料:
刚刚获得的个人经验:P
无法获取请求令牌


1

在尝试了很多解决方案后,对我有效的一个是在Twitter应用程序的设置部分中添加twittersdk://作为另一个回调URL。


0
我在iOS上遇到了同样的问题,并在这里找到了一个提示:
显然,现在需要将回调URL设置为

http://twitter-oauth.callback

自从我这样做了,登录功能又正常了。

0
在“密钥和访问令牌”选项卡中创建您的访问令牌。

-1

Twitter 不得安装在设备上,否则将打开 Web 视图。 - Khalid Taha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接