6

... 但它是!

我使用以下链接调用 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() 的结果进行了比较,没有发现任何区别。

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

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

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

4

3 回答 3

2

好吧,原来我误解了 OAuth 协议。我正在获取然后引导我访问 accessToken 的授权代码。

但我无法具体修复该错误。我刚刚重新开发了该程序并实现了身份验证代码和访问令牌分离,现在它工作正常。

也许取消授权该应用程序并重新授权它@ facebook 确实解决了它?

于 2012-12-02T10:52:17.467 回答
1

Error code 191 for Facebook is

API Error Code: 191

API Error Description: The specified URL is not owned by the application

Error Message: redirect_uri is not owned by the application.

Make sure mydomain.org is in the App Domains field, and that the Website with Facebook login field is correct.

于 2012-12-01T07:04:45.647 回答
1

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

于 2014-01-17T09:04:13.063 回答