我正在尝试将我的项目与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用于网站.

我做错了什么?显然,这与我的Facebook应用程序设置有关,但我看不到什么!

有帮助吗?

解决方案

更新:
回答API错误代码:191
redirect_uri 应与站点URL相等(或相对)。
enter image description here

小费: 使用基本URL,而不是指向特定页面的完整URL。

不建议: 例如,如果您使用 www.mydomain.com/fb/test.html 作为您的网站URL和 www.mydomain.com/fb/secondPage.html 作为 redirect_uri 这将为您带来191个错误。

推荐的: 因此,将您的网站URL设置为基本URL,例如: www.mydomain.com/ 或者 www.mydomain.com/fb/.


我经历了Facebook Python样本应用 今天,我是 震惊 它清楚地说您可以使用 http://localhost:8080/ 作为 网站URL 如果您在本地开发:

配置网站URL,并将其指向您的Web服务器。如果您在本地开发,则可以使用 http:// localhost:8080/

当我 曾是 当然,您不能根据我自己的经验(虽然非常古老的测试)做到这一点 能够 本地测试您的Facebook应用程序!

因此,我拿起了我的旧应用程序,并编辑了其名称,网站URL和帆布URL:站点URL: http://localhost:80/fblocal/

我下载了最新 Facebook php-sdk 把它扔进我的 xampp/htdocs/fblocal/ 文件夹。

但是我的错误与您的错误相同!我注意到了 Xampp 正在自动重定向 http://localhost/fblocal/ 所以我将设置更改为简单 http://localhost/fblocal/ 错误消失了 我必须删除该应用程序(从 隐私设置)并重新安装我的应用程序,这是结果:
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

其他提示

对我来说,这是一个缺少的应用程序域。进入该应用程序,并确保您将网站的根源设置为应用程序域。请参阅屏幕截图。

app domains is in the basic settings of your app

这仅仅是因为URL错误。

任何指定的网站URL都应正确。

我提到网站URL为 http://localhost:3000/和域名为Local主机,但是在我的浏览器中,我正在运行 http://0.0.0.0:3000/.

当我运行服务器作为 localhost:3000 它解决了问题。

正如我提到的,如果我们正在运行0.0.0.0:3000, ,将会出现错误,即“应用程序配置不允许给定URL”。

当我使用Facebook身份验证方法时,我也面临着同样的问题。但是我通过以下更改Facebook API纠正了这个问题(Apps >> My App >> Basic).

  1. 我删除了我给出的URL ===> 在Facebook上的应用 (帆布URL)
  2. 我只给网站URL in ===> 网站带Facebook登录 选项

然后,我在网页中给出了这个苹果和应用程序的秘密。

因此,通过单击登录按钮,它要求获得访问权限,然后重定向以提供URL(网站带Facebook登录 ).

也有同样的问题:

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

当我将Redirect_uri从Devloper页面更改为实时页面时,出现了191个错误。

因此,我删除了$ params:

$facebook->getLoginUrl();

在App-Request之后,现在FB重定向到应用程序URL本身FE:my.domain.com

我现在要做的是在我的应用程序中检查index.php是否在fb iframe中。如果不是,我将重定向到实时FB页面FE:

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

我还注意到,即使您在Secion下指定了您的网站 - 网站使用Facebook登录 - >网站URL为EG http://example.com, ,但是,如果您的应用域部分为空,并且您以www.example.com打开网站,您也会收到此错误。为了避免在“应用域”部分Write Example.com中,它将允许子域,例如www.example.com,sometsing.example.com等

在Facebook应用程序页面中,获取基本选项卡。查找“具有Facebook登录的网站”选项。

您会找到网站URL:输入放置完整的URL(例如 http://mywebsite.com/mylogin.aspx )。这是您可以与呼叫一起使用的URL,例如应用程序ID为123456789

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

我想添加的东西,因为这是错误191在Google上的第一个问题:

当重定向到Facebook而不是您自己的网站以寻求签名请求时,如果用户可以使用安全浏览,并且您的应用程序确实无需SSL将其重定向到Facebook,则可能会遇到此错误。

在当地工作...我无法让feeds API工作,但是Share Share API立即起作用,没有任何问题。

我通过将重定向URL传递到 FacebookRedirectLoginHelper::getAccessToken() 在我的回调功能中:

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

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

我正在流浪盒子上开发,似乎 FacebookRedirectLoginHelper::getCurrentUrl() 存在生成有效URL的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top