回调URL未经Twitter批准

时间:2018-06-29 13:40:39

标签: twitter oauth-2.0 spring-social spring-social-twitter

我的基于spring-social-twitter构建的应用程序使用户能够使用Twitter登录,该应用程序最近已停止工作。

我收到如下错误消息:

  

此客户端应用程序未批准回调URL。可以在您的应用程序设置中调整批准的回调URL

注意:我使用的是Spring Social Twitter版本1.1.2。如果您使用的是Spring Social Twitter 1.1.0.RELEASE版本,则可能会收到如下稍微不同的错误消息:

  

对“ https://api.twitter.com/oauth/request_token”的POST请求导致403(禁止);调用错误处理程序

2 个答案:

答案 0 :(得分:2)

Twitter最近(于2018年5月)强制实施Twitter登录用户出于安全原因必须将回调URL列入白名单(请参见the announcement)。

这意味着必须为所有受支持的第三方应用程序显式且相同地设置回调URL。您可以在Twitter的应用程序设置页面中设置回调URL:https://apps.twitter.com

例如,如果您的回调URL为http://localhost:8080/myApp/signin/twitter,则必须将其完全添加到Twitter应用程序设置页面的“回调URL”列表中:http://localhost:8080/myApp/signin/twitter

enter image description here

另请参阅the documentation on Twitter callback URLs

答案 1 :(得分:0)

自从Twitter进行了更改以提高安全性以来,我为此感到困惑。我的Android应用将在Intent Filter中使用回调URL和相同的URL。但是自更改以来,我所使用的URL必须在Twitter开发人员门户中注册。我使用的是ouath:// myapp,但Twitter不接受将其作为有效的URL(网站)。

经过一番挖掘,我发现对于应用程序,您可以指定任何方案,但只能指定为方案。例如,我使用myapp://作为回调URL。

在我的应用中,我的回调URL是myapp:// whatever,在Intent过滤器中,我使用了:

<data android:scheme="myapp" android:host="whatever">

Twitter接受了回调URL,并在用户使用其Twitter凭据进行身份验证后将其正确重定向回我的应用程序。

我最初只是使用普通的网站,但也可以使用,但是经过Twitter验证后,它询问我是否要重定向到“我的应用”或Chrome浏览器。使用上述方法,它将仅返回您的应用。

完成所有这些操作后,我意识到我可以添加Oauth://作为回调URL,并且我的应用程序无需更改即可正常工作。