我正在尝试将我的项目与 Facebook 集成。我一开始只是采取一些小步骤,只是尝试登录、获取 Facebook session 并获取一些用户数据。我在本地开发它,所以我的 Facebook 应用程序设置是:
site URL: http://127.0.0.1:8888/mySite/
canvas URL同上。我没有指定站点域。
但是,当我点击登录按钮时,出现错误:
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.
目前我还没有编写任何服务器端代码来处理重定向等。我所做的只是根据 Facebook for Websites 中的教程添加JavaScript SDK。 .
我做错了什么?这显然与我的 Facebook 应用程序设置有关,但我看不出是什么!
最佳答案
更新:
回答 API 错误代码:191
redirect_uri
应该等于(或相对)站点 URL。
提示:使用基本 URL 而不是指向特定页面的完整 URL。
不推荐:例如,如果您使用 www.mydomain.com/fb/test.html
作为您的网站 URL 并且拥有 www.mydomain。 com/fb/secondPage.html
as redirect_uri
这会给你 191 错误。
推荐:因此,将您的站点 URL 设置为基本 URL,例如:www.mydomain.com/
或 www.mydomain.com/fb/
。
我浏览了 Facebook Python sample application今天,我很震惊它清楚地说明了如果你正在开发,你可以使用 http://localhost:8080/
作为 Site URL本地:
Configure the Site URL, and point it to your Web Server. If you're developing locally, you can use http://localhost:8080/
虽然我是确定你不能这样做,但根据我自己的经验(尽管是非常古老的测试)看来你实际上可以 在本地测试您的 Facebook 应用程序!
所以我选择了我的一个旧应用程序并编辑了它的名称、站点 URL 和 Canvas URL:
网站网址:http://localhost:80/fblocal/
我下载了最新的Facebook PHP-SDK并将其放入我的 xampp/htdocs/fblocal/
文件夹中。
但是我得到了和你一样的错误!我注意到 XAMPP正在自动重定向到 http://localhost/fblocal/
所以我将设置更改为简单 http://localhost/fblocal/
并且错误消失了 但是我不得不删除应用程序(从 privacy settings )并重新安装我的应用程序,结果如下:
之后,请求 publish_stream
权限,我就可以发布到我的个人资料(使用 PHP-SDK):
$user = $facebook->getUser();
if ($user) {
try {
$post = $facebook->api('/me/feed', 'post', array('message'=>'Hello World, from localhost!'));
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
结果:
关于 Facebook API 错误 191,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4691782/