如果未登录或需要权限,我使用以下代码验证Facebook使用并将其重定向到登录页面。问题是getUser()总是返回0,导致代码卡在重定向循环中。有什么想法吗?
include_once("facebook.php");
$app_id = 'xxxxxxxxxxxx';
$app_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
// initialize facebook
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
));
$user = $facebook->getUser();
echo $user;
if ($user) {
try {
$fbme = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
else
{
$loginUrl = $facebook->getLoginUrl(array('scope' => 'email'));
header('Location: '.$loginUrl);
}
答案 0 :(得分:3)
经过几天的搜索后,我发现在使用Facebook API时我并没有添加“代码”键值。系统需要它才能验证
当您使用API函数$ facebook-> getLoginUrl();它会将您带到一个登录页面(当您正确进行身份验证时)只需返回您自己的网站,并在导航栏中输入code =“x”参数。因此,在实例化Facebook对象时,您只需使用获取请求即可获取此信息。
当您的网页重新加载Facebook API时,请确保其中一个键值为 'code'=> $ _GET [ '代码'], 排序..
非常生气,我必须自己解决这个问题。看看这里的getLoginUrl()文档http://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/,你会发现它没有指明它返回的内容,只是它“授权”了应用程序无论这意味着什么。
此处在http://developers.facebook.com/docs/reference/php/中找到的PHP API文档的主页上,它指出所需的最小参数数量是app secret和appID。如果是这种情况,那么为什么添加代码会对我的问题进行排序?
如果我在胡说八道,请回复。我想知道我的方式的错误:)。
答案 1 :(得分:1)
这不是sdk相关问题,SDK(3.1)运行良好。如果配置错误,如果_REQUEST类似全局因http服务器丢弃,则getUser()和PHP-SDK将无声地失败。我使用了错误配置的nginx并在跟踪代码后~3小时通过vhost配置更改解决了这个问题。