2014-03-29 63 views
1

工作,我有一個Facebook應用程序在https://apps.facebook.com/inboxcupid/Facebook的API的getUser不移動

工作當試圖從移動設備登錄,該方法的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>"; 
} 

如果有人可以幫助我弄清楚我應該心存感激。

+0

不能任何人幫助我? doe的人知道另一個來源我可以問這個問題嗎? – digicom

回答

0

最後讓它工作。

看來,在移動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>"; 
    } 
}