可能重复:
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');
任何人都可以解释如何解决这个问题以及为什么会发生这种情况吗?
答案 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登录的网站”并输入您的站点地址。
答案 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');