[英]Facebook API GetUser not working in mobile
我有一個工作在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 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>";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.