Как обойти метод входа в Facebook PHP, если у вас уже есть действительный auth_token
-
25-10-2019 - |
Вопрос
Я использую эту библиотеку для доступа к API графов Facebook в своем проекте codeigniter:http://www.haughin.com/code/facebook/
Мое веб-приложение использует Facebook JS SDK для аутентификации пользователей на стороне клиента, а затем сразу после завершения входа в систему идентификатор пользователя и объект сеанса отправляются на мой сервер через запрос AJAX.Я хочу вызвать API-интерфейс графа с сервера, чтобы получить основную информацию о пользователе, поэтому мне интересно, есть ли способ обойти необходимость вызова метода facebook->login() для получения сеанса через перенаправление с Facebook?Кто-нибудь знает, как это сделать?
Решение
Я вообще не рекомендую Facebook SDK.У вас будет гораздо больше контроля, если вы будете делать что-то самостоятельно, и это станет намного проще.Просто настройте функцию cURL, например:
function curl($url, $request = 'GET'){
$ch = curl_init();
$curlopt = array(
CURLOPT_URL => $url,
CURLOPT_CUSTOMREQUEST => $request,
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_USERAGENT => 'facebook-php-2.0',
);
curl_setopt_array($ch, $curlopt);
$response = curl_exec($ch);
if($response === false)
trigger_error(curl_error($ch));
curl_close($ch);
return $response;
}
А затем функция API Facebook, например:
function fb_api($url, $access_token = false, $request = 'GET'){
$url = 'https://graph.facebook.com/'.$url;
if($access_token)
$url .= (strstr($url, '?') ? '&' : '?').'access_token='.$access_token;
return json_decode(curl($url, $request), true);
}
Затем вы можете сделать запрос к графическому API, например:
fb_api('me', $access_token);
Другие советы
Если, потому что каким -то образом у вас нет установки завивки, вы всегда можете использовать мою прокси -библиотеку: http://codeigniter.com/forums/viewthread/186250/