Facebook - OAuth令牌 - redirect_uri不是绝对URL

时间:2012-11-27 15:15:17

标签: facebook facebook-graph-api oauth

......但确实如此!

我使用以下链接调用facebook API以接收我的访问令牌:

https://www.facebook.com/dialog/oauth?client_id=myclientid&redirect_uri=http%3A%2F%2Fmydomain.org%3A8080%2FServer%2FFacebookAuthenticationVerificationServlet&scope=manage_notifications,offline_access,read_mailbox,read_stream,publish_stream

我做错了什么?

Facebook回答以下错误:

message: redirect_uri isn't an absolute URI. Check RFC 3986.
type: OAuthException
code: 191

它不应该与它有任何关系,但我使用java的URLEncode.encode()将URL编码为UTF-8。我将结果与JavaScript的encodeURIComponent()中的结果进行了比较,但没有发现任何差异。

编辑:我是否必须将域设置为我的配置?我无法在“App Domains”上找到它(因为facebook不允许我在那里使用端口配置添加域名)但我将域名设置为“我网站的URL”。

EDIT2:未编码的重定向uri:http://mydomain.org:8080/Server/FacebookAuthenticationVerificationServlet

EDIT3:这与:8080无关。我用php脚本(URL就像bla.domain.org/myphp.php)测试了它,并通过php脚本将代码发送到tomcat服务器,但错误仍然存​​在。

3 个答案:

答案 0 :(得分:2)

好吧,事实证明我误解了OAuth协议。我正在获取授权码,然后将我引导到accessToken。

但我无法解决具体的错误。我刚刚重新开发了这个程序,并实现了auth-code和access-token分离,现在工作正常。

也许没有授权该应用并重新授权@ facebook确实修复了它?

答案 1 :(得分:1)

Facebook的错误代码191是

  

API错误代码:191

     

API错误说明:指定的URL不属于应用程序

     

错误消息:redirect_uri不归应用程序所有。

确保mydomain.org位于“应用程序域”字段中,并且“使用Facebook登录的网站”字段正确无误。

答案 2 :(得分:1)

你不应该编码redirect_uri。 http%3A%2F%2Fmydomain.org不被理解为http://mydomain.org