【问题标题】:Facebook server-side OAuth 2.0 on localhost:8080 can't get access token missing redirect_urilocalhost:8080 上的 Facebook 服务器端 OAuth 2.0 无法获取缺少 redirect_uri 的访问令牌
【发布时间】:2013-02-07 18:42:02
【问题描述】:

还有很多与此相关的其他问题,但它们并没有帮助我解决我的问题。

我正在使用 Facebook 服务器端登录网站,我想在本地进行测试。启动登录操作的路径是 [http://localhost:8080/fblogin](这会重定向到 Facebook 登录对话框,并从那里开始)。

我可以成功获取代码,但是当我尝试将其交换为访问令牌时,我收到以下错误:

{"error":{"message":"Missing redirect_uri parameter.","type":"OAuthException","code":191}}

我提供了redirect_uri,url 编码,它与我用来获取第一个代码的相同。这是我用来请求访问令牌的 url(当然,全大写查询字符串参数替换为它们的实际值):

https://graph.facebook.com/oauth/access_token?client_id=CLIENT_ID&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Ffblogin&client_secret=CLIENT_SECRET&code=CODE_FROM_FB

我怀疑这可能与我的应用在 Facebook 上的设置方式有关。以下是我设置的值:

Display Name: (an actual display name here) 
App Domains: localhost 
Contact email: (an actual email here) 
Site URL: [http://localhost:8080/fblogin]

我需要在设置中进行哪些调整才能使其正常工作?或者这看起来正确吗?

顺便说一句,如果有什么不同的话,我正在使用 Play!框架,版本 2.0.1

【问题讨论】:

    标签: facebook playframework-2.0 oauth-2.0 localhost facebook-oauth


    【解决方案1】:

    又摸索了一下,发现从我的服务器发送请求来获取访问令牌时,我需要使用 POST。

    【讨论】:

      【解决方案2】:

      有趣的是,使用 POST 对你有用,因为这对我没有用。

      无论如何,您是否使用 setQueryParameter() 添加了查询参数? (见How to make multiple http requests in play 2?

      【讨论】:

      • 是的,必须使用 setQueryParameter() 才能使其正常工作。您收到什么错误消息?
      猜你喜欢
      • 2015-10-12
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 2015-05-05
      • 2011-02-28
      相关资源
      最近更新 更多