现在我正在使用 facebook connect 开发移动网络应用程序,但我在使用 OAuth 对话框时遇到问题。我使用以下 facebook 文档作为引用:
http://developers.facebook.com/docs/guides/mobile/#web
我选择使用 OAuth 对话框而不是登录按钮,因为移动浏览器不识别 FBML(我使用黑莓浏览器进行测试)。 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? 如果你们有解决方案,请帮忙。
最佳答案
看起来您需要使用 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;
}
}
关于php - 如何使用 OAuth 对话框在移动 Web 应用程序上使用 facebook 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5495368/