8

Ich bin mit dem Facebook PHP SDK relevanten APIs aufrufen und Daten erhalten zu veröffentlichen. Momentan speichere ich ein Benutzerzugriffstoken in der Datenbank, aber es läuft nach 60 Tagen ab. Wie kann ich ein Benutzerzugriffstoken aktualisieren?Wie aktualisiert man Facebook Access Token für Serverseite (in facebook-php SDK)?

1. Wann muss ich die Zugriffstoken aktualisieren? Nach dem Ablauf oder vor?

2. Was ist der beste Weg, um Zugangstoken zu aktualisieren?

3. Müssen sich meine Benutzer erneut anmelden, um das Zugriffstoken zu aktualisieren?

Dies ist die Funktion, dass ich die Zugriffstoken zu verlängern bin mit. aber die Ablaufzeit bleibt gleich.

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

Ja, hat der Benutzer die App wieder besuchen einen neuen Zugriffstoken zu erhalten. – CBroe

Antwort

6

Die access token kann nicht einfach so aufgefrischt werden, sollte der Benutzer die App zugreifen wieder den neuen Token zu erhalten.

Sie können das Token jederzeit aktualisieren Sie es wünschen. In der Tat ist es am besten, den Token jedes Mal zu aktualisieren, wenn der Nutzer Ihre App besucht. Auf diese Weise wird das Token niemals abgelaufen sein, wenn der Nutzer die App in 60 Tagen einmal besucht.

+0

Danke für die Antwort. Die Probleme sind, dass Benutzer meine App mehr als 100 mal an einem Tag besuchen können. als es wird 100 Mal aktualisiert werden. ist das in Ordnung?? und wie kann ich Zugangstoken aktualisieren? –

+0

Nun, erfrischende 100 mal am Tag wahrscheinlich übertrieben wäre, warum es nicht höchstens einmal pro Tag? das Zugriffstoken refresh klar dokumentiert wird, würde die Endpunktparameter einfügen hier nur überflüssig: https://developers.facebook.com/docs/facebook-login/access-tokens/#extending – Igy

+0

Ja, ich habe diese Technik implementieren in meiner Projekt, aber es ist nicht die Zeit zu überschreiten. Siehe den folgenden Punkt in diesem Link. es erwähnt, dass Sie das Access-Token aktualisieren müssen, und das ist meine Frage, wie? –

0

Versuchen Sie folgendes:

$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

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; 

} 
+1

Bitte fügen Sie eine Erklärung zusammen mit dem Code hinzu, damit andere davon profitieren können. –

Verwandte Themen