Come bypass facebook metodo PHP login se si dispone già di un auth_token valida
-
25-10-2019 - |
Domanda
sto usando questa libreria per l'accesso Facebook graph API all'interno del mio progetto CodeIgniter: http://www.haughin.com/code/facebook/
Il mio web app utilizza il Facebook JS SDK per autenticare gli utenti sul lato client, quindi subito dopo un login è completato user-id e la sessione oggetto dell'utente vengono inviati al server tramite una richiesta AJAX. Voglio fare una chiamata al API grafico dal server per ricevere le informazioni di base per l'utente, quindi mi chiedo se c'è un modo per bypassare il bisogno di chiamare il metodo facebook-> login () per ricevere una sessione tramite un reindirizzare da facebook? Qualcuno sa come fare questo?
Soluzione
Non consiglio il Facebook SDK a tutti. Hai un controllo molto di più se si fanno le cose da soli e diventa molto più semplice. Basta impostare una funzione cURL come:
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;
}
E poi una funzione API di Facebook come:
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);
}
Poi si può rendere la vostra richiesta al api grafico come:
fb_api('me', $access_token);
Altri suggerimenti
Se, per qualche modo non avete installato ricciolo, si può sempre usare la mia biblioteca Proxy: http: / /codeigniter.com/forums/viewthread/186250/