<?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。我的代码出了什么问题?
答案 0 :(得分:4)
您的代码没有任何问题。
请确保:
Facebook Developers
网站 - &gt; App > YourApp > Basic
- &gt; App Domains
Facebook Developers
网站 - &gt; App > YourApp > Basic
- &gt; Website with Facebook Login
也许您已经使用尚未接受您的fb应用的用户登录。 在这种情况下,您将看到“ Please login.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>
希望这有帮助。