什么是Facebook API错误191

时间:2013-01-19 22:48:46

标签: php facebook facebook-graph-api

  

可能重复:
  Facebook API error 191

我使用的一些代码出现以下错误。错误是

  

API错误代码:191   API错误说明:指定的URL不归应用程序所有   错误消息:redirect_uri不归应用程序所有。

<?php   
$facebook = new Facebook(array('appId' => $app_id,'secret' => $app_secret,'cookie' => true));
if($facebook->getUser() < 1)
{
    $red_url = $page_url.'?sk=app_'.$app_id;
    $redir = $facebook->getLoginUrl(array('redirect_uri'=>$red_url,'next'=>$red_url,'scope'=>'offline_access,publish_stream,status_update,photo_upload,user_birthday'));
    echo "<script>top.location.href='".$redir."';</script>";
    exit;
}
$user = $facebook->api('/me');

任何人都可以解释如何解决这个问题以及为什么会发生这种情况吗?

3 个答案:

答案 0 :(得分:0)

你能说“跨站点脚本”;)?

替代方法:

浏览器,编辑设置,网站     &lt; =添加应用设置的网站网址

这里有更多背景知识:

  

*   http://techblog.hybris.com/2012/06/05/oauth2-the-implicit-flow-aka-as-the-client-side-flow/

     

redirect_uri:服务器配置了redirect_uri(我们强烈推荐)   需要匹配client_id的设置。 Client_id和   redirect_uri是app开发人员的服务器端设置   需要事先得到。

答案 1 :(得分:0)

您需要告诉Facebook您的应用是否可以访问该网站。

编辑您的应用设置(通过FB开发人员信息中心)。在基本设置页面上,单击“使用Facebook登录的网站”并输入您的站点地址。

Editing your Facebook app websites

答案 2 :(得分:0)

当您打开Facebook应用程序时,您需要设置运行应用程序的域名 - 并且(几乎)您的应用程序与Facebook(特别是客户端)联系的每个地方都必须来自网址来自同一个域(或其子域)

在您的情况下,您告诉要求facebook为用户授权该应用,然后将其重定向到$red_url,我知道这是您的应用安装的页面 - 但此链接不在您的域下应用程序(除非您在应用程序仪表板中将facebook.com注册为您的应用程序域

如果要将用户重定向到该特定选项卡,您可以在应用程序的域下创建一个代理文件,将用户重定向到选项卡,例如:

假设您在app dashboard中注册了mydomain.com作为您的应用领域。然后 - 创建一个名为redirect.php的文件,例如,它将包含以下脚本并将其放在http://www.mydomain.com/my_directory/redirect.php下:

<?php
$app_id ="ENTER_YOUR_APP_ID_HERE";
$page_url = "ENTER_THE_PAGE_URL_HERE"; //for example: http://www.facebook.com/techmarketing.co.il
$red_url = $page_url.'?sk=app_'.$app_id;

header("Location: {$red_url}");

并且您的脚本将更改为:

<?php   
$facebook = new Facebook(array('appId' => $app_id,'secret' => $app_secret,'cookie' => true));
if($facebook->getUser()==0)
{
    $red_url = "http://www.mydomain.com/my_directory/redirect.php";
    $redir = $facebook->getLoginUrl(array('redirect_uri'=>$red_url,'next'=>$red_url,'scope'=>'offline_access,publish_stream,status_update,photo_upload,user_birthday'));
    echo "<script>top.location.href='".$redir."';</script>";
    exit;
}
$user = $facebook->api('/me');