我的Facebook登录功能在我的本地主机上完美运行,但当我将其上传到网络服务器时,无法从用户那里获取任何数据。 我只能获取他们的脸书ID ,但其他信息为空或空白。
我认为facebook登录有效,因为它们被重定向到我初始化的$redirect_url
。
$app_id = "******";
$app_secret = "*******";
$redirect_url = "localhost/sample/";
try
{
$facebook = FacebookSession::setDefaultApplication($app_id,$app_secret);
$helper = new FacebookRedirectLoginHelper($redirect_url);
$sess = $helper -> getSessionFromRedirect();
}
catch(Exception $e)
{
}
if(!isset($sess))
{
//facebook login button
echo '<div class="fb"><a href="'.$helper->getLoginUrl().'"> <i class="fa fa-facebook"></i>Sign in with Facebook</a></div>';
}
else
{
$request = new FacebookRequest($sess,'GET','/me');
$response = $request->execute();
$graph = $response->getGraphObject(GraphUser::classname());
$fb_id = $graph ->getId(); //this is the only data that i can get
$fname = $graph ->getFirstName();
$lname = $graph ->getLastName();
$gender = $graph ->getGender();
echo 'name: '.$fname.' '.$lname.' gender: '.$gender; // these are null or ''
$_SESSION['fb_session'] = $sess;
}
我已获得我的许可。
如上所示,我认为我没有违反任何规则,因为我只是从约定的许可中获取信息。
答案 0 :(得分:-1)
看起来FB要求您在请求中包含Graph版本。此外,为什么不在例外中添加一些检查,以查看它是图形问题还是FB SDK。此外,用户是否正在进行身份验证,而您只是没有获取数据,或者他们是否未进行身份验证?
以下是我使用过的剪辑,它位于FB Graph auth文档中:
$fb = new Facebook\Facebook([
'app_id' => '{app-id}',
'app_secret' => '{app-secret}',
'default_graph_version' => 'v2.2',
]);
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
这也可以让你从你注册的应用程序中获取它的redirect_url。