【问题标题】:Callback URL not approved by Twitter回调 URL 未经 Twitter 批准
【发布时间】:2018-12-08 17:33:37
【问题描述】:

我基于spring-social-twitter 构建的允许用户使用 Twitter 登录的应用程序最近停止工作。

我收到如下错误消息:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    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

    另见the documentation on Twitter callback URLs

    【讨论】:

      【解决方案2】:

      自从 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 验证后,它询问我是否要重定向到 My App 或 Chrome 浏览器。使用上述方法,它只会返回到您的应用程序。

      在我完成所有这些之后,我意识到我可以将 Oauth:// 添加为回调 URL,我的应用程序无需更改即可运行。

      【讨论】:

      • 您在 BOLD 中写的内容对我有帮助。谢谢。
      • 非常感谢,这对我也有帮助! Twitter 的文档包含一个误导性示例:You want to use example://authorize as your callback URL,这是不正确的。
      猜你喜欢
      • 2018-11-07
      • 2018-11-22
      • 2020-05-14
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 2018-12-14
      • 2012-08-14
      • 1970-01-01
      相关资源
      最近更新 更多