【发布时间】:2012-03-09 04:16:49
【问题描述】:
我正在使用 Facebook PHP SDK 对用户进行身份验证。使用 PHP SDK 生成 LoginUrl 后,单击该 LoginUrl 的用户将被重定向到请求许可的 Facebook 页面。单击Go to App 链接后,用户将被重定向回我的网站http://www.mydomain.com/login/facebook_connect。
问题:在被 Facebook“认证”后,http://www.mydomain.com/login/facebook_connect 的 PHP 脚本无法确定用户是否通过 Facebook 登录。此时$user = $facebook->getUser();为0。
我做错了吗?谢谢!
生成LoginUrl的页面的PHP代码
require 'libs/fb-php-sdk/facebook.php';
// Create our Application instance
$facebook = new Facebook(array(
'appId' => '123',
'secret' => '123'
));
// Get User ID
$user = $facebook->getUser();
// Get Login URL
$loginUrl = $facebook->getLoginUrl(array(
"scope" => "email,user_education_history,user_work_history",
"redirect_uri" => "http://www.mydomain.com/login/facebook_connect/"
));
$data['fb_login_url'] = $loginUrl;
$this->load->view('splash', $data);
页面用户的 PHP 代码在 Facebook 身份验证后被重定向到
*http://www.mydomain.com/login/facebook_connect/*
require 'libs/fb-php-sdk/facebook.php';
$facebook = new Facebook(array(
'appId' => '123',
'secret' => '123',
));
// See if there is a user from a cookie
$user = $facebook->getUser();
// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
print_r($user_profile);
echo $user;
【问题讨论】:
-
当 facebook 重定向回您的网站时,您是否检查了完整的网址?应该有一个 access_token 参数。
-
重定向现在工作正常,使用
redirect_uri而不是next。 -
这是我从 Facebook 身份验证页面重定向回我的网站后得到的网址:
http://www.mydomain.com/facebook_pickup.php?state=f210c06a9854f43edd12bdb57993e1da&code=AQCUp3YsSVNa2LfnKR1EXr_wq3BapIHJ5qr7nNury0fJQidb-nnkn2ZIxImMvN92CtiLwkZTmmzWelv9Lt8EDor2Q2YmKSDI6OoFTiNe8OZdDLLO5YATYA4-Bc1_y8qOcwOzq8-gzj4u__BwuLJLJFYe4e4plXgREYK6EbTXB872QCtz2aiSen0dpHPSdkfXncs#_=_没有 access_token 参数...