Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use facebook connect on mobile web application using the OAuth Dialog

Now I'm developing a mobile web application using facebook connect, but I am having problems with the OAuth Dialog. I use the following facebook documents for my reference:

http://developers.facebook.com/docs/guides/mobile/#web

I choose to use the OAuth Dialog instead of the Login Button because mobile browsers do not recognize the FBML (I use the Blackberry browser on testing). The OAuth Dialog also lets me add a list of permissions within the parameters of scope. But the problem is when I've logged in using the OAuth Dialog, the parameter $me wasn't recognized so that the login button still appears and doesn't not change to the logout button. Here is an example of my code:

$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>";
}

Is the parameter $me can't be used if I use the OAuth Dialog to connects to facebook? So how do I know that I am already logged into facebook or not if I use the OAuth Dialog? Please help if you guys have the solution.

like image 878
jangkrik Avatar asked Nov 05 '22 00:11

jangkrik


1 Answers

Looks like you need to use the updated PHP-SDK

getSession() has been replaced by 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;
  }
}
like image 94
ShawnDaGeek Avatar answered Nov 09 '22 11:11

ShawnDaGeek