77

我正在尝试将我的项目与 Facebook 集成。起初我只是在尝试登录,获取 Facebook 会话并获取一些用户数据。我在本地开发它,所以我的 Facebook 应用程序设置是:

site URL: http://127.0.0.1:8888/mySite/

画布 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 应用程序设置有关,但我看不出是什么!

4

11 回答 11

89

更新:
回答 API 错误代码:191应该与站点 URL 相同(或相对)
redirect_uri
在此处输入图像描述

提示: 使用基本 URL 而不是指向特定页面的完整 URL。

不推荐:例如,如果您使用www.mydomain.com/fb/test.html作为您的站点 URL 并拥有www.mydomain.com/fb/secondPage.htmlredirect_uri会给您 191 错误。

推荐:因此,请将您的站点 URL 设置为基本 URL,例如:www.mydomain.com/OR www.mydomain.com/fb/


我今天浏览了 Facebook Python 示例应用程序,我很震惊它清楚地说明如果你在本地开发,你可以使用http://localhost:8080/作为站点 URL :

配置站点 URL,并将其指向您的 Web 服务器。如果你在本地开发,你可以使用 http://localhost:8080/

虽然我确信你不能这样做,但根据我自己的经验(虽然是非常古老的测试),你似乎实际上可以在本地测试你的 Facebook 应用程序!

所以我拿起了我的一个旧应用程序并编辑了它的名称、站点 URL 和画布 URL:站点 URL:http://localhost:80/fblocal/

我下载了最新的Facebook PHP-SDK并将其放入我的xampp/htdocs/fblocal/文件夹中。

但我得到了和你一样的错误!我注意到XAMPP正在执行自动重定向,http://localhost/fblocal/因此我将设置更改为 simplehttp://localhost/fblocal/并且错误消失了我必须删除应用程序(从隐私设置)并重新安装我的应用程序,结果如下:
替代文字

之后,请求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;
    }
}

结果: 替代文字

于 2011-01-14T14:02:08.567 回答
11

对我来说,这是一个缺失的应用程序域。进入应用程序,并确保您已将站点的根目录设置为应用程序域。见截图。

应用域在您应用的基本设置中

于 2013-05-23T16:47:44.803 回答
8

这只是因为 URL 错误。

指定的任何网站 URL 都应该是正确的。

我提到网站 URLhttp://localhost:3000/ 和域作为 localhost,但在我的浏览器中我正在运行http://0.0.0.0:3000/.

当我运行服务器时,localhost:3000它解决了问题。

正如我所提到的,作为 localhost Facebook 的站点 URL 将重定向到相同的,如果我们正在运行 0.0.0.0:3000,则会出现“应用程序配置不允许给定 URL”的错误。

于 2012-04-30T08:20:09.483 回答
2

当我使用 facebook 身份验证方法时,我也面临同样的问题。Apps >> My App >> Basic但我通过以下 Facebook api ( )的更改来纠正这个问题。

  1. 我删除了我在 Facebook 上的 ===> 应用程序中提供的 url (画布 URL)
  2. 我只在 ===>带有 Facebook 登录选项的网站中提供了网站网址

然后我在我的网页中给出了 AppId 和 App Secret。

因此,通过单击登录按钮,它会要求访问权限,然后将其重定向以提供 url(带有 Facebook 登录的网站)。

于 2012-09-10T12:25:06.577 回答
1

我通过将重定向 url 传递给FacebookRedirectLoginHelper::getAccessToken()我的回调函数来解决这个问题:

从改变

try {
        $accessToken = $helper->getAccessToken();
}
...

try {
        $accessToken = $helper->getAccessToken($fbRedirectUrl);
}
...

我正在开发一个 vagrant box,似乎FacebookRedirectLoginHelper::getCurrentUrl()在生成有效 url 时遇到了问题。

于 2018-06-11T09:40:33.727 回答
0

有同样的问题:

$params = array('redirect_uri' => 'facebook.com/pages/foobar-dev');
$facebook->getLoginUrl($params);

当我将 redirect_uri 从开发者页面更改为实时页面时,出现 191 错误。

所以我删除了 $params:

$facebook->getLoginUrl();

在应用程序请求之后,现在 FB 重定向到应用程序 url 本身 fe: my.domain.com

我现在要做的是检查我的应用程序的 index.php 是否在 FB iframe 内。如果没有,我会重定向到实时 FB 页面 fe:

$app = 'facebook.com/pages/foobar-live';
$rd = (isset($_SERVER['HTTP_REFERER'])) ? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) : false;
if ($rd == 'apps.facebook.com' || (!isset($_REQUEST['signed_request'])))  {
    echo '<script>window.parent.location = "'.$app.'";</script>';
    die();
}
于 2012-11-21T17:22:15.823 回答
0

我还注意到,即使您在 secion - Website With Facebook Login -> Site url 下指定您的网站,例如 http://example.com,但如果您的 App Domains 部分为空,并且您将网站打开为 www.example。 com 你也会得到这个错误。为避免在“应用程序域”部分写入 example.com,这将允许子域,如 www.example.com、something.example.com 等

于 2012-12-05T13:42:13.823 回答
0

在 facebook 应用页面中,转到基本选项卡。找到“使用 Facebook 登录的网站”选项。

您会发现站点 URL:输入完整的 URL(例如http://Mywebsite.com/MyLogin.aspx)。这是您可以在调用中使用的 URL,例如 If the APP ID is 123456789

https://graph.facebook.com/oauth/authorize?client_id=123456789&redirect_uri=http://Mywebsite/MyLogin.aspx&scope=publish_actions

于 2013-06-28T19:47:40.463 回答
0

我想补充一点,因为这是谷歌上的错误 191 第一个问题:

当为签名请求重定向到 facebook 而不是您自己的站点时,如果用户已安全浏览并且您的应用确实在没有 SSL 的情况下重定向到 facebook,您可能会遇到此错误。

于 2013-12-05T16:15:13.110 回答
0

在本地工作...我无法让 feed api 工作,但 share api 几乎可以立即工作,没有任何问题。

于 2015-09-08T09:44:11.927 回答
0

对我来说,这是 Facebook 登录设置中的有效 OAuth 重定向 URI。一旦我更新了正确的重定向 URI,191 错误就消失了。

在此处输入图像描述

于 2020-10-16T04:34:58.130 回答