facebook oauth url问题

facebook oauth url问题,facebook,oauth-2.0,facebook-login,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(

我有下面的代码,部分工作正常

<?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不属于应用程序 错误消息:无效重定向\u uri:应用程序配置不允许给定URL

我在stackoverflow上发现了类似的问题,但似乎无法解决:/

在我的设置下,我有相同的url和$app\u url

使用facebook的网站->网站url->

编辑:我编辑我的应用程序url,因此它现在与应用程序设置下的画布url相同:

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


编辑:在测试时偶尔清除cookie非常重要。否则,某些地方会出现一些非常随机的错误

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

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

print('<script> top.location.href="' . $loginUrl . '";</script>');
print('top.location.href=“”.$loginUrl.“;”);
(用双引号更容易理解,你漏掉了一个分号。即使并不总是需要它,你最好使用它)

请尝试以下代码:

$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;
   }
$user=$facebook->getUser();
//如果用户尚未安装应用程序,请将其重定向到“身份验证”对话框
如果(!$user){
$loginUrl=$facebook->getLoginUrl(数组)(
'scope'=>$scope,
'重定向\u uri'=>$app\u url,
));
打印('top.location.href=\'.$loginUrl.\';');
}
否则{
回显“用户ID:”。$User;
}

另外,去掉“index.php”后面的斜杠。那不是我的文件夹(我希望/猜测)。

在一些文件中,如果包含了它,我会出错;在一些文件中,如果没有包含,我会出错。在这个文件中,我得到了它,但很抱歉忘记发布它。顺便说一句,我的应用程序秘密是假的:),但我会修复我确实回显了URL,并将它放在我的地址栏中。但是仍然给我一个空白页:(那么,loginurl给你一个空白页?你登录facebook了吗?还要检查沙盒模式是否启用,用一个登录的应用程序管理员测试它。我登录了。我用管理员和一个测试用户测试。沙盒模式是禁用的。你确定你的域填充了“应用程序域”吗在Facebook开发者中编辑应用程序时?如果您想在Web应用程序中完全访问您的应用程序,而不受是否拥有子域的限制,请填写主域。我的应用程序域是:mywebsite.com(不含http和any/)。Facebook一直在抱怨我在其中写的内容