【问题标题】:Facebook API GetUser not working in mobileFacebook API GetUser 在移动设备中不起作用
【发布时间】:2014-03-29 04:51:06
【问题描述】:

我在https://apps.facebook.com/inboxcupid/ 有一个 Facebook 应用程序

当尝试从移动设备登录时,GetUser 方法总是返回 0。 它实际上创建了一个重定向循环,因为页面不断重定向到登录,返回到应用程序页面,然后返回登录。

必须知道此代码在桌面上运行良好,但在移动设备上失败。

这是我的代码:

require_once ('facebook.php');

$config = array(
    'appId' => '*****',
    'secret' => '*****'
);

// Create the Facebook object
$facebook = new Facebook($config);

$login_params = array(
    'canvas' => 1,
    'scope' => 'basic_info, user_about_me, user_birthday, user_relationships, user_relationship_details, user_location, user_photos',
    'fbconnect' => 1,
  );

$user = $facebook->getUser();

if($user) {
    try {
        $permissions = $facebook->api("/me/permissions");
        if( !array_key_exists('basic_info', $permissions['data'][0]) || !array_key_exists('user_location', $permissions['data'][0]) || !array_key_exists('user_about_me', $permissions['data'][0]) || !array_key_exists('user_birthday', $permissions['data'][0]) || !array_key_exists('user_relationships', $permissions['data'][0]) || !array_key_exists('user_relationship_details', $permissions['data'][0]) || !array_key_exists('user_photos', $permissions['data'][0]) ) {
            $login_url = $facebook->getLoginUrl($login_params); 
            echo "<script" . " type='text/javascript'" . ">top.location.href = '$login_url';</script>"; 
        }

    } catch(FacebookApiException $e) {
        $login_url = $facebook->getLoginUrl($login_params); 
        echo "<script" . " type='text/javascript'" . ">top.location.href = '$login_url';</script>"; 
        error_log($e->getType());
        error_log($e->getMessage());
    }   
} else {
    $login_url = $facebook->getLoginUrl($login_params);
    echo "<script" . " type='text/javascript'" . ">top.location.href = '$login_url';</script>"; 
}

如果有人能帮我弄清楚,我将不胜感激。

【问题讨论】:

  • 没有人能帮我解决这个问题吗?有人知道我可以问这个问题的其他来源吗?

标签: php facebook facebook-graph-api mobile facebook-php-sdk


【解决方案1】:

终于让它工作了。

似乎在移动设备中 php sdk 不会自动获取和存储访问令牌,可以手动完成。

这是我的代码,根据您的喜好...

require_once ('facebook.php');

// Set authentication variables
$config = array(
    'appId' => '374681629327567',
    'secret' => '463cd6dc258e1225b86ac529a391f4e9',
    'cookie' => true,
);

// Create the Facebook object
    $facebook = new Facebook($config);

$login_params2 = array(
    'canvas' => 0,
    'scope' => 'basic_info, user_about_me, user_birthday, user_relationships, user_relationship_details, user_location, user_photos',
    'display' => 'touch',
    'redirect_uri' => 'https://secure.inboxcupid.co.il/mobile/index.php'
);

$user = $facebook->getUser();
if($user) {
    try {
        $permissions = $facebook->api("/me/permissions");
        if( !array_key_exists('basic_info', $permissions['data'][0]) || !array_key_exists('user_location', $permissions['data'][0]) || !array_key_exists('user_about_me', $permissions['data'][0]) || !array_key_exists('user_birthday', $permissions['data'][0]) || !array_key_exists('user_relationships', $permissions['data'][0]) || !array_key_exists('user_relationship_details', $permissions['data'][0]) || !array_key_exists('user_photos', $permissions['data'][0]) ) {
            $login_url = $facebook->getLoginUrl($login_params);                                 
            echo "<script" . " type='text/javascript'" . ">top.location.href = '$login_url';</script>"; 
        }

    } catch(FacebookApiException $e) {
        $login_url = $facebook->getLoginUrl($login_params); 
        echo "<script" . " type='text/javascript'" . ">top.location.href = '$login_url';</script>"; 
        error_log($e->getType());
        error_log($e->getMessage());
    }   
} else {
    $login_url = $facebook->getLoginUrl($login_params2);
    if(isset($_GET['code'])) {
        $token_url = 'https://graph.facebook.com/oauth/access_token?client_id=****&redirect_uri=' . urlencode('https://secure.inboxcupid.co.il/mobile/index.php') . '&client_secret=****&code=' .$_GET['code'];
        $response = file_get_contents($token_url);
        $params = null;
        parse_str($response, $params);
        if(!isset($params['access_token'])) { echo "<script" . " type='text/javascript'" . ">top.location.href = '$login_url';</script>"; }
        $graph_url = "https://graph.facebook.com/me?access_token=" . $params['access_token'];
        $user2 = json_decode(file_get_contents($graph_url));
        $user = $user2->id;
        $facebook->setAccessToken($params['access_token']);
    }
    else {
        echo "<script" . " type='text/javascript'" . ">top.location.href = '$login_url';</script>"; 
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多