localhost:8080上的Facebook服务器端OAuth 2.0无法获取缺少redirect_uri的访问令牌

时间:2013-02-22 07:45:26

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

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

我正在使用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

2 个答案:

答案 0 :(得分:0)

在挖掘了一点之后,我发现在从服务器发送请求以获取访问令牌时,我必须使用POST。

答案 1 :(得分:0)

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

在任何情况下,您是否使用setQueryParameter()添加查询参数? (见How to make multiple http requests in play 2?