......但确实如此!
我使用以下链接调用facebook API以接收我的访问令牌:
我做错了什么?
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服务器,但错误仍然存在。
答案 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