【问题标题】:What is Facebook API error 191 [duplicate]什么是 Facebook API 错误 191 [重复]
【发布时间】:2013-01-19 22:48:46
【问题描述】:

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

谁能解释一下如何解决这个问题以及为什么会发生这种情况?

【问题讨论】:

  • 错误似乎很明显。您使用的重定向 url 与您的应用程序设置中的给定域名不匹配。

标签: php facebook facebook-graph-api


【解决方案1】:

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

在您的情况下,您告诉 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');

【讨论】:

  • 立即查看 - 将 $app_id$page_id 替换为相关值
  • 我不想为每个应用程序更改 redirect.php 上的内容
  • 很遗憾,您将不得不这样做 - 就像您必须对每个应用程序进行不同的编程一样。
  • 感谢您所做的一切,我做了我想做的事。
  • 欢迎您 - 如果答案正确,请标记为正确:)
【解决方案2】:

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

解决方法:

浏览器、编辑设置、网站

这里有一点背景:

* 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 都是应用程序开发人员的服务器端设置 需要提前到达。

【讨论】:

  • 删除了反对票,但最好删除聪明的裤子评论:)
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 2011-11-16
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多