的Facebook的getUser总是返回0
// Function for facebook login
function facebook_login() {
$output = array();
// Create facebook object for user login.
$config = array();
$config['appId' ] = 'XXXXXXX';
$config['secret'] = 'XXXXXXX';
$config['cookie'] = true;
session_start();
$code = $_GET['code'];
$facebook_user = null;
// Create the facebook user object
$facebook = new Facebook(array(
'appId' => $config['appId'],
'secret' => $config['secret'],
'cookie' => $config['cookie'],
));
// Get User ID
$facebook_user = $facebook->getUser();
// If facebook user id not equal to 0
if ($facebook_user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
$output['facebookurl'] = 'user/register';
return $output; // Returns a result.
}
catch (FacebookApiException $e) {
drupal_set_message($e, 'error');
$facebook_user = null;
}
}
else {
$facebook_params = array(
'scope' => 'email',
'redirect_uri' => 'http://localhost/mywebsite',
'display' => 'popup',
'code' => $code,
);
$output['facebookurl'] = $facebook->getLoginUrl($facebook_params); // Returns the facebook login url as result.
}
}
这里是Facebook登录我的PHP代码。某些事件会调用facebook_login()
函数,并会根据$output
结果进行一些处理。
问题是$facebook_user
总是0,即我总是得到getLoginUrl
作为输出。我已经尝试了与此问题相关的*中的所有答案,但没有人帮助我。
我在我的本地主机上测试这个应用程序,并在facebook应用程序设置中将网站URL设置为http://localhost/mywebsite
。
请帮忙!
当您运行此代码时,您是否登录Facebook并在登录URL后面?您只有在用户添加了应用程序并且在您的网站上设置了Cookie后,才会返回用户ID。
只要您的FB上的应用程序设置配置为指向本地主机,在Localhost上运行此功能也将正常工作。
我已经在facebook上传了我的应用程序设置的屏幕截图。我没有指定应用程序域,是否有必要这样做? – subhojit777 2012-08-07 12:23:50
谢谢。您的设置看起来正确。 'getLoginUrl();'返回什么? – 2012-08-07 12:49:15
https://www.facebook.com/dialog/oauth?client_id=XXXXX&redirect_uri=http%3A%2F%2Flocalhost%2Fmywebsite&state=87f06f869ba01a25a9a525b607af376c&scope=email – subhojit777 2012-08-07 13:00:56
您是否启用了离线访问权限? Plus是您的重定向网址在应用程序配置中相同吗? – AlphaMale 2012-08-07 06:46:12
谢谢你,在我的应用程序中,我已启用'删除offline_access权限设置'。是的,正如问题中提到的,网站URL与'redirect_uri'相同。 – subhojit777 2012-08-07 06:52:09
您不需要'offline_access'权限。 – 2012-08-07 11:45:52