0
我有一個應用程序在Android上,我有權訪問我的個人資料,但與該數據(可能是access_token?)我想登錄到我的Symfony2項目沒有任何密碼。還是應該通過Symfony2進行登錄以及Android應用程序和我的Symfony2項目之間的交互?Facebook API通過Android和登錄到Symfony2
我該怎麼辦?
無論如何感謝任何人的提示。
我有一個應用程序在Android上,我有權訪問我的個人資料,但與該數據(可能是access_token?)我想登錄到我的Symfony2項目沒有任何密碼。還是應該通過Symfony2進行登錄以及Android應用程序和我的Symfony2項目之間的交互?Facebook API通過Android和登錄到Symfony2
我該怎麼辦?
無論如何感謝任何人的提示。
您可以使用圖形API從Facebook
從Android應用程序,你從SDK中的access_token。 爲了從SF2應用程序獲取令牌,可以調用/ login/facebook?token = [access_token] api。
$url = 'https://graph.facebook.com/me?access_token='.$token;
$response = $this->wget($url);
$data = json_decode($response['content'], true);
if(isset($data['error'])){
// if the response has errors
throw new HttpException(self::ERROR_CODE, $data['error']['message']);
} else if(isset($data['verified']) && $data['verified'] == true){
// Your user is successfully authenticated, you can retrieve is personal information from $data
// What you get depend of your FB app permissions
} else {
throw new HttpException(self::ERROR_CODE, self::ERROR_INVALID_FACEBOOK_USER_MESSAGE);
}
wget的UTIL這裏:
private function wget($url)
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "spider", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_SSL_VERIFYPEER => false // Disabled SSL Cert checks
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
感謝@VBee,該代碼爲我節省了很多時間! :) – 2014-10-07 12:20:11