facebook oauth网址问题

时间:2012-11-15 09:52:28

标签: facebook oauth-2.0 facebook-login

我有以下代码,部分工作

<?php

   require_once 'facebook.php';

   $app_id = 'MY_APP_ID';
   $app_secret = 'MY_APP_SECRET';
   $app_url = 'http://mysite.com/index.php/';
   $scope = 'user_about_me';

   // Init the Facebook SDK
   $facebook = new Facebook(array(
     'appId'  => $app_id,
     'secret' => $app_secret,     
     'cookie' => true
   ));

   // Get the current user
   $user = $facebook->getUser();

   // If the user has not installed the app, redirect them to the Auth Dialog
   if (!$user) {
     $loginUrl = $facebook->getLoginUrl(array(
       'scope' => $scope,
       'redirect_uri' => $app_url,
     ));

     print('<script> top.location.href=\'' . $loginUrl . '\'</script>');
   } 

    $user_profile = $facebook->api('/me');
    echo "id: " . $user_profile['id'];   

 ?>

我在此页面上打印出正确的ID,但在其他几个页面上,我会进入if(!$ user)。

但是oauth url中存在错误:

API错误代码:191 API错误说明:指定的URL不归应用程序所有 错误消息:redirect_uri无效:应用程序配置不允许给定URL。

我在stackoverflow上发现了类似的问题,但似乎无法修复它:/

在我的设置下,我有相同的网址和$ app_url

Facebook的网站 - &gt;网站网址 - &gt; https://www.facebook.com/pages/myappname/373671679372127/

编辑:我编辑了我的app_url,现在它与应用设置下的我的画布网址相同:http://mysite.com/index.php/

现在我没有收到错误。我只是得到一个空白的窗口:(

编辑:重要的是在测试时清除一次cookie。还有一些非常随机的错误

1 个答案:

答案 0 :(得分:1)

检查您是否在开发设置中为“使用Facebook登录的网站”设置了正确的网址。这不能是facebook.com上的页面,它必须是您域名的链接。

另外,我会将代码的最后两行括在“else”块中。 JavaScript代码是错误的。这是正确的:

print('<script> top.location.href="' . $loginUrl . '";</script>');

(使用双引号更容易理解,你错过了分号。即使不总是需要,你最好使用它)

试试这段代码:

$user = $facebook->getUser();

   // If the user has not installed the app, redirect them to the Auth Dialog
   if (!$user) {
     $loginUrl = $facebook->getLoginUrl(array(
       'scope' => $scope,
       'redirect_uri' => $app_url,
     ));
     print('<script> top.location.href=\'' . $loginUrl . '\';</script>');
   }
   else {
    echo 'User ID: ' . $user;
   }

另外,在“index.php”之后摆脱Slash。这不是我的文件夹(我希望/猜测)。