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一直在抱怨我在其中写的内容