0

可能重复:
Facebook API 错误 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');

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

4

3 回答 3

0

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

编辑您的应用设置(通过 FB 开发者仪表板)。在基本设置页面上,单击“使用 Facebook 登录的网站”并输入您的网站地址。

编辑您的 Facebook 应用程序网站

于 2013-01-19T23:12:47.577 回答
0

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

解决方法:

浏览器、编辑设置、网站 <= 将网站 URL 添加到应用设置

这里有一点背景:

* 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 都是应用程序开发人员需要事先获取的服务器端设置。

于 2013-01-19T22:50:43.283 回答
0

当您打开 Facebook 应用程序时,您需要设置您的应用程序打算在其下运行的域 - 并且(几乎)您的应用程序与 facebook 接触的每个地方(尤其是客户端)都必须来自同一个 url域(或其子域)

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

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

假设您在应用仪表板mydomain.com中注册为您的应用域。然后 - 创建一个名为example 的文件,该文件将包含以下脚本并将其放在:redirect.phphttp://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');
于 2013-01-19T23:31:32.240 回答