现在我正在使用facebook connect开发移动Web应用程序,但是我遇到了OAuth对话框的问题。我使用以下facebook文档作为参考:
http://developers.facebook.com/docs/guides/mobile/#web
我选择使用OAuth Dialog而不是Login Button,因为移动浏览器无法识别FBML (我在测试时使用Blackberry浏览器)。 OAuth对话框还允许我在范围参数中添加权限列表。但问题是当我使用OAuth对话框登录时,参数$ me无法识别,因此登录按钮仍会显示,并且不会更改为注销按钮。 以下是我的代码示例:
$facebook = new Facebook(array(
'appId' => 'xxxxxxxxxxxxxxxx',
'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'cookie' => true,
));
$session = $facebook->getSession();
$me = null;
// Session based API call.
if ($session) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
$accessToken = $facebook->getAccessToken();
} catch (FacebookApiException $e) {
error_log($e);
}
}
if ($me) {
echo "<img src=\"images/logoutFB.gif\">";
} else {
echo "<a href=\"http://www.facebook.com/dialog/oauth?scope=user_about_me,user_activities,user_birthday,user_education_history,user_events,user_groups,user_hometown,user_interests,user_likes&client_id=".$facebook->getAppId()."&redirect_uri=".urlencode("http://MYURL.COM")."&display=wap\"><img src=\"images/loginFB.gif\"></a>";
}
如果我使用OAuth Dialog连接到Facebook,是否无法使用参数$ me? 那么如果我使用OAuth对话框怎么知道我已经登录到facebook了? 如果你们有解决方案,请帮忙。
答案 0 :(得分:2)
您似乎需要使用the updated PHP-SDK
getSession()
已替换为getUser()
:
require './src/facebook.php';
$facebook = new Facebook(array(
'appId' => '135669679827333',
'secret' => 'xxxxxxxxxxxxxxxx',
));
$user = $facebook->getUser();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
$user = null;
}
}