如何使用OAuth对话框在移动Web应用程序上使用facebook连接

时间:2011-03-31 04:35:02

标签: php facebook mobile connect

现在我正在使用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了? 如果你们有解决方案,请帮忙。

1 个答案:

答案 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;
  }
}