Facebook API错误191

时间:2011-01-14 13:56:41

标签: facebook facebook-javascript-sdk

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

11 个答案:

答案 0 :(得分:88)

<强>更新
要回答API错误代码:191
redirect_uri应与网站网址相同(或相对) enter image description here

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

未推荐:例如,如果您使用www.mydomain.com/fb/test.html作为网站网址并将www.mydomain.com/fb/secondPage.html设为redirect_uri,则会出现191错误。

推荐:请将您的网站网址设置为基本网址,例如:www.mydomain.com/www.mydomain.com/fb/


今天我浏览了Facebook Python sample application,我感到非常震惊它明确表示您可以使用http://localhost:8080/作为网站网址你在当地发展:

  

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

虽然我 确定你不能这样做,但根据我自己的经验(虽然很老的测试),你似乎确实 CAN 在本地测试您的Facebook应用程序!

所以我拿起了我的旧应用程序并编辑了它的名称,Site URL和Canvas URL: 网站网址:http://localhost:80/fblocal/

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

但我和你的错误一样!我注意到XAMPP正在自动重定向到http://localhost/fblocal/所以我将设置更改为http://localhost/fblocal/,错误消失了但是我不得不删除应用程序(来自privacy settings)并重新安装我的申请表,结果如下:
alt text

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

结果: alt text

答案 1 :(得分:11)

对我而言,这是一个缺少的应用领域。进入应用程序,确保将您网站的根目录设置为应用程序域。见截图。

app domains is in the basic settings of your app

答案 2 :(得分:8)

这只是因为网址错误。

无论指定哪个网站网址都应该是正确的。

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

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

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

答案 3 :(得分:2)

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

  1. 我删除了我提供的网址 ===&GT; Facebook上的应用(Canvas URL)
  2. 我只提供网站网址 ===&GT; 使用Facebook登录的网站选项
  3. 然后我在我的网页上提供了AppId和App Secret。

    因此,点击登录按钮,它会要求访问权限,然后将其重定向到网址(有Facebook登录的网站)。

答案 4 :(得分:0)

有同样的问题:

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

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

所以我删除了$ params:

$facebook->getLoginUrl();

现在应用程序请求后FB重定向到应用程序URL本身f.e。:my.domain.com

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

$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();
}

答案 5 :(得分:0)

我也注意到即使你指定你的网站在secion下 - 网站有Facebook登录 - &gt;网站网址为例如http://example.com,但如果您的应用域名部分为空,并且您将网站打开为www.example.com,您也会收到此错误。要避免在“App Domains”部分编写example.com,这将允许子域名,例如www.example.com,something.example.com等

答案 6 :(得分:0)

在Facebook App页面中,转到基本选项卡。找到“有Facebook登录的网站”选项。

您会在其中找到网址:输入完整的网址(例如http://Mywebsite.com/MyLogin.aspx)。这是您可以使用的URL,如果APP ID是123456789

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

答案 7 :(得分:0)

我想添加的内容,因为这是关于谷歌的第一个问题:

当重定向到Facebook而不是您自己的网站以获取已签名的请求时,如果用户安全浏览并且您的应用确实重定向到没有SSL的Facebook,则可能会遇到此错误。

答案 8 :(得分:0)

在当地工作...... 我无法使feed api工作,但是共享api几乎没有任何问题。

答案 9 :(得分:0)

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

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

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

我正在开发一个流浪盒,似乎FacebookRedirectLoginHelper::getCurrentUrl()在生成有效网址时出现问题。

答案 10 :(得分:0)

对我来说,这是Facebook登录设置中的有效的OAuth重定向URI 。更新正确的重定向URI后,就会出现191错误。

enter image description here