[英]Facebook Login using PHP SDK not working
<?php
require_once('facebook.php');
$config = array(
'appId' => 'xxxxx',
'secret' => 'xxxxx',
);
$facebook = new Facebook($config);
$user_id = $facebook->getUser();
?>
<html>
<head></head>
<body>
<?php
if($user_id) {
try {
$user_profile = $facebook->api('/me','GET');
echo "Name: " . $user_profile['name'];
} catch(FacebookApiException $e) {
$login_url = $facebook->getLoginUrl();
echo 'Please <a href="' . $login_url . '">login.</a>';
echo "1";
error_log($e->getType());
error_log($e->getMessage());
}
} else {
$login_url = $facebook->getLoginUrl();
echo 'Please <a href="' . $login_url . '">login.</a>';
echo "2";
}
?>
</body>
</html>
当我转到mysite.com/fbconect.php时,它是一个带有LOGIN链接的白页。 当我点击登录时,它将进入Facebook页面登录。 登录后,我回到mysite.com/fbconect.php然后再显示,登录链接再次回复“1”。 mysite.com的URL成为mysite.com/fbconect.php?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx。 我的代码有什么问题?
你的代码没有错。
确定:
Facebook Developers
网站 - > App > YourApp > Basic
- > App Domains
Facebook Developers
网站 - > App > YourApp > Basic
- > Website with Facebook Login
也许您已经使用尚未接受您的fb应用的用户登录。 在这种情况下,您将看到“ 请登录1 ”
如果您看到“ 请登录2 ”, 请确保您的代码已被捕获且异常。 例如,如果你读这个:
OAuthException
Error validating access token: User YYYYYYYY has not authorized application XXXXXXXXXXXXXXXX.
您的fb用户很可能已从他/她的列表中删除了您的应用。 或者,如果你看到
Couldn't connect to host
这意味着您正在处理的系统最有可能阻止传出连接。
如果你想要一个已经接受你的fb应用程序的测试用户,你可以从Facebook Developers
网站创建一个进入“ Apps > YourApp > Developer Roles
”
如果您想获得用户的授权,您可以更改您的代码:
<?php
require_once('facebook.php');
$config = array(
'appId' => 'xxxxx',
'secret' => 'yyyyyy',
);
$facebook = new Facebook($config);
$user_id = $facebook->getUser();
?>
<html>
<head></head>
<body>
<?php
function render_login($facebook) {
$canvas_page = 'http://www.yoursite.com/';
// HERE YOU ASK THE USER TO ACCEPT YOUR APP AND SPECIFY THE PERMISSIONS NEEDED BY
$login_url = $facebook->getLoginUrl(array('scope'=>'email,user_photos,friends_photos', 'redirect_uri'=>$canvas_page));
echo 'Please <a href="' . $login_url . '">login.</a>';
}
if($user_id) {
try {
$user_profile = $facebook->api('/me','GET');
echo "Name: " . $user_profile['name'];
} catch(FacebookApiException $e) {
render_login($facebook);
echo "1";
error_log($e->getType());
error_log($e->getMessage());
}
} else {
render_login($facebook);
echo "2";
}
?>
</body>
</html>
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.