我已经阅读了大量的线程,但是没有答案或给出的答案对我不起作用。
我有以下代码要求授权我的Facebook应用程序,如果他们尚未授权。一旦获得授权,它应该重定向到同一页面,但这次不需要请求授权。
代码完美地要求用户授权...完全按照我的意愿工作,但是当app重新加载时,$ user始终设置为0.
这是我的代码:
//Get PHP SDK
require_once 'facebook.php';
// Create our Application instance.
$facebook = new Facebook(array(
'appId' => 'xxxxxxxxxxxxxxx',
'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'cookie' => true
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
echo "logged in and authenticated";
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
// Ask for authorisation
if(!$user) {
$login_url = $facebook->getLoginUrl(
array(
'canvas' => 1,
'fbconnect' => 0,
'scope' => 'email,publish_stream',
'redirect_uri' => 'myurl - same as Site URL in app basic settings'
)
);
echo "<script> top.location.href='" . $login_url . "'</script>";
}
}
用户授权应用后,它不会再次请求授权,所以我假设授权有效,但为什么$facebook->getUser()
会返回0?
重定向后的URL有两个查询字符串参数 - “state”和“code”。它们相关吗?我应该和他们一起做点什么吗?据我所知,我已经下载了最新的Facebook SDK,所以我对如何实现这一点感到茫然。
注意:我通过AJAX调用上面的代码。
答案 0 :(得分:0)
好的,我已对此进行了排序。 代码确实有效,这就是我通过ajax运行的问题。 一旦我用它作为正确的页面加载而不是ajax调用它一切正常:)