spero si noto che se si ha il permesso publish_stream non hai bisogno di token di accesso qui è la documentazione per publish_stream e Di seguito è la soluzione per quattro scenari
1. Il gettone scade dopo scadere del tempo (2 ore è l'impostazione predefinita) .
2. L'utente modifica la propria password che invalida il token di accesso.
3. L'utente de-autorizza la tua app.
4. L'utente si disconnette da Facebook.
Per garantire la migliore esperienza per i vostri utenti, la vostra app deve essere preparata a rilevare gli errori per gli scenari di cui sopra. Il seguente codice PHP mostra come gestire questi errori e recuperare un nuovo token di accesso.
Quando si reindirizza l'utente alla finestra di dialogo di autorizzazione, all'utente non vengono richieste autorizzazioni se l'utente ha già autorizzato l'applicazione. Facebook ti restituirà un token di accesso valido senza alcuna finestra di dialogo con l'utente. Tuttavia, se l'utente ha de-autorizzato la tua applicazione, l'utente dovrà ri-autorizzare la tua applicazione per ottenere l'access_token.
<?php
$app_id = "YOUR_APP_ID";
$app_secret = "YOUR_APP_SECRET";
$my_url = "YOUR_POST_LOGIN_URL";
// known valid access token stored in a database
$access_token = "YOUR_STORED_ACCESS_TOKEN";
$code = $_REQUEST["code"];
// If we get a code, it means that we have re-authed the user
//and can get a valid access_token.
if (isset($code)) {
$token_url="https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret
. "&code=" . $code . "&display=popup";
$response = file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$access_token = $params['access_token'];
}
// Attempt to query the graph:
$graph_url = "https://graph.facebook.com/me?"
. "access_token=" . $access_token;
$response = curl_get_file_contents($graph_url);
$decoded_response = json_decode($response);
//Check for errors
if ($decoded_response->error) {
// check to see if this is an oAuth error:
if ($decoded_response->error->type== "OAuthException") {
// Retrieving a valid access token.
$dialog_url= "https://www.facebook.com/dialog/oauth?"
. "client_id=" . $app_id
. "&redirect_uri=" . urlencode($my_url);
echo("<script> top.location.href='" . $dialog_url
. "'</script>");
}
else {
echo "other error has happened";
}
}
else {
// success
echo("success" . $decoded_response->name);
echo($access_token);
}
// note this wrapper function exists in order to circumvent PHP’s
//strict obeying of HTTP error codes. In this case, Facebook
//returns error code 400 which PHP obeys and wipes out
//the response.
function curl_get_file_contents($URL) {
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_URL, $URL);
$contents = curl_exec($c);
$err = curl_getinfo($c,CURLINFO_HTTP_CODE);
curl_close($c);
if ($contents) return $contents;
else return FALSE;
}
?>
per maggiori dettagli informazioni è possibile visitare questo link
Grazie
fonte
2012-02-22 14:31:40
Ora questa è una taglia :)! – Asken
per offline_access? https://developers.facebook.com/docs/offline-access-deprecation/ –
Quando si rinnova un token di accesso se l'utente è connesso a Facebook, non vede alcuna finestra di dialogo. Qual è esattamente la tua domanda? –