8

Utilizzo l'SDK PHP di Facebook per chiamare le API pertinenti per pubblicare e ottenere dati. Attualmente sto salvando un token di accesso utente nel database ma scade dopo 60 giorni. Come posso aggiornare un token di accesso utente?come aggiornare il token di accesso di Facebook per lato server (in facebook-php SDK)?

1. Quando devo aggiornare i token di accesso? Dopo la scadenza o prima?

2. Qual è il modo migliore per aggiornare i token di accesso?

3. I miei utenti devono accedere nuovamente per aggiornare il token di accesso?

Questa è la funzione che sto utilizzando per estendere il token di accesso. ma il tempo di scadenza rimane lo stesso.

public function getExtendedAccessToken($access_token) 
    {  

     $token_url="https://graph.facebook.com/oauth/access_token"; 
     $params=array('client_id'=>self :: appId,'client_secret'=>self :: appSecretId,'grant_type'=>'fb_exchange_token','fb_exchange_token'=>$access_token); 

      $response = $this->curl($token_url,$params);     
      $response = explode ('=',$response); 
      $response = explode ('&',$response[1]); 
      $response = $response[0];  
      return $response; 

    } 
+0

Sì, l'utente deve visitare nuovamente la vostra applicazione per ottenere un nuovo token di accesso. – CBroe

risposta

6

Il access token non possono essere aggiornate proprio così, l'utente deve accedere nuovamente l'applicazione per ottenere il nuovo token.

È possibile aggiornare il token in qualsiasi momento. In effetti, il modo migliore è aggiornare il token ogni volta che l'utente visita la tua app. In questo modo, il token non sarà mai scaduto se l'utente continua a visitare l'app una volta ogni 60 giorni.

+0

Grazie per la risposta. I problemi sono che l'utente può visitare la mia app più di 100 volte in un giorno. che sarà aggiornato di 100 volte. è ok?? e come posso aggiornare il token di accesso? –

+0

Beh, rinfrescarsi 100 volte al giorno sarebbe probabilmente eccessivo, perché non farlo al massimo una volta al giorno? l'aggiornamento del token di accesso è chiaramente documentato, incollare i parametri dell'endpoint qui sarebbe ridondante: https://developers.facebook.com/docs/facebook-login/access-tokens/#extending – Igy

+0

Sì, ho implementato questa tecnica nel mio progetto ma non eccede il tempo. vedere il punto in basso in quel link. si dice che è necessario aggiornare il token di accesso e questa è la mia domanda come? –

0

Prova questo:

$app_id = FB_APP_ID; 
$app_secret = FB_SECRET_ID; 
$canvas_URL = FB_PAGE_URL; 
$code = $_REQUEST["code"]; 

if(empty($code)) { 
    $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection 
    $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" 
    . $app_id . "&redirect_uri=" . $canvas_URL . "&state=" 
    . $_SESSION['state']; 

    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
} 
if($_REQUEST['state'] == $_SESSION['state']) { 
$facebook->api('oauth/access_token', array(
    'client_id'  => FB_APP_ID, 
    'client_secret' => FB_SECRET_ID, 
    'type'   => 'client_cred', 
    'code'   => $code, 
)); 
$token = $facebook->getAccessToken(); 
echo$token; 
} 
0

funzione pubblica getExtendedAccessToken ($ access_token) {

$token_url="https://graph.facebook.com/oauth/access_token"; 
    $params=array('client_id'=>self :: appId,'client_secret'=>self :: appSecretId,'grant_type'=>'fb_exchange_token','fb_exchange_token'=>$access_token); 

     $response = $this->curl($token_url,$params);     
     $response = explode ('=',$response); 
     $response = explode ('&',$response[1]); 
     $response = $response[0];  
     return $response; 

} 
+1

Aggiungi una spiegazione insieme al codice, in modo che possa aiutare gli altri. –

Problemi correlati