Facebook API错误191


76

我正在尝试将我的项目与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应用程序设置有关,但是我看不到!


对于读者:请注意,此问题和公认的答案都适用于本地服务器和开发/测试以及真实的服务器和URL!
Stefano

Answers:


88

更新:
回答API错误代码:191
该值redirect_uri应等于(或相对于)网站URL。
在此处输入图片说明

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

不推荐使用:例如,如果你使用www.mydomain.com/fb/test.html的网站网址,并具有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 /

虽然我肯定你不能做到这一点,根据我自己的经验(很老的测试虽然)看来你确实CAN本地测试Facebook应用程序!

因此,我拿起了我的一个旧应用程序并编辑了它的名称,网站URL和画布URL:网站URL: http://localhost:80/fblocal/

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

但是我和你有同样的错误!我注意到XAMPP正在自动重定向到,http://localhost/fblocal/因此我将设置更改为简单http://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;
    }
}

结果: 替代文字


1
嗯,所以现在我很困惑。关于这个答案呢:stackoverflow.com/questions/4633846/facebook-app-development
musoNic80 2011年

1
他的意思是您可以在本地测试您的应用程序,但是与Facebook的任何交互都需要发布您的网站/域。例如,如果您有Flash游戏,则可以先在本地对其进行测试,然后再在FB画布上对其进行测试。至于之后的代码,他正在解释如何保护您的实时网站,直到开发完成并且您准备好上线为止。
ifaour 2011年

2
到现在为止还挺好!我已经到了登录对话框并要求权限!我还没有机会测试获取一些实际数据,但是我希望当我接受这个答案时,答案是可以接受的!hoo!
musoNic80

您是如何重新安装该应用程序的?我在Sandbx模式并获得同样的错误191,除非我直接访问浏览器我REDIRECT_URL然后显示我身份验证对话框
Volatil3

@ Volatil3,我只是将其从隐私设置中的应用列表中删除。
ifaour 2012年

11

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

应用程序域位于应用程序的基本设置中


因为楼主这个答案是不相关的问题是本地开发和应用程序域字段不允许localhost或127.0.0.1:flic.kr/p/kHqiny
文斯-

4
询问者的问题已经解决。此答案旨在对有类似问题的人员有用,他们认为此问题将根据大胆的标题为他们提供帮助。现在可以了。
Mike_K 2014年

8

这仅仅是因为URL错误。

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

我提到的网站URL为http://localhost:3000/ ,域名为localhost,但是在我的浏览器中我正在运行http://0.0.0.0:3000/

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

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


2

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

  1. 我删除了我在Facebook上的===> App中提供的URL(画布URL)
  2. 我仅在===>具有Facebook登录选项的网站中提供了网站网址

然后,我在网页中提供了该AppId和App Secret。

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


0

有同样的问题:

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

当我将redirect_uri从devloper页面更改为活动页面时,出现191错误。

所以我删除了$ params:

$facebook->getLoginUrl();

在应用程序请求之后,FB现在重定向到应用程序URL本身,例如: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();
}

0

我还注意到,即使您在secion-用Facebook登录的网站->网站url下指定您的网站,例如 http://example.com,但是如果您的“应用程序域”部分为空,则您将网站打开为www.example。 COM,您也会收到此错误。为了避免出现这种情况,请在“应用程序域”部分中编写example.com,该示例将允许子域,例如www.example.com,something.example.com等



0

我想添加的内容,因为这是Google上的错误191第一个问题:

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


0

在本地工作...我无法使feed api正常工作,但是share api几乎可以立即正常工作,没有问题。


0

我通过将重定向网址传递给FacebookRedirectLoginHelper::getAccessToken()回调函数来解决此问题:

从改变

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

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

我在无业游民的盒子上进行开发,似乎FacebookRedirectLoginHelper::getCurrentUrl()在生成有效网址时遇到了问题。


0

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

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.