2016-07-10 18 views
0

Hallo im diesem Code für die oauth_token bekommen und oauth_token_secretTwitter kehrt [code] => 89 Ich versuche nur zweites Mal zu verwenden, die tookens

require 'autoload.php'; 
use Abraham\TwitterOAuth\TwitterOAuth; 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET); 
$request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK)); 
$_SESSION['oauth_token'] = $request_token['oauth_token']; 
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; 
$url = $connection->url('oauth/authorize', array('oauth_token' => $request_token['oauth_token'])); 
echo $url; 
header('Location: '.$url); 

und auf meinem Rückruf-URL ist:

$request_token = []; 
$request_token['oauth_token'] = $_REQUEST['oauth_token']; 
$request_token['oauth_token_secret'] = 'JeVDKh0rSfBozrJ65p1lG4HaDmBtLkqF'; 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_REQUEST['oauth_token'], $request_token['oauth_token_secret']); 
$access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier'])); 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']); 
$user = $connection->get("account/verify_credentials"); 
$add = "INSERT INTO users SET 
     name = '".$user->name."', 
     username = '".$user->screen_name."', 
     oauth_token = '".$_REQUEST['oauth_token']."', 
     oauth_token_secret = '".$_SESSION['oauth_token_secret']."', 
     oauth_verifier = '".$_REQUEST['oauth_verifier']."', 
     id_string = '".$user->id_str."', 
     status = '1' "; 

aber wenn danach aus der Datenbank, wenn ich versuche, mir gibt es auf jedem acc

[code] => 89 
[message] => Invalid or expired token. 

anmelden Ess Token bekomme ich diesen Fehler. Ich benutze diesen Code für relogin

$oauth_token = 'token from db'; 
$oauth_token_secret = 'token_secrete from db'; 
$oauth_verifier = 'aoth verifier from db that i stored'; 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $oauth_token, $oauth_token_secret); 
$access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $oauth_verifier)); 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $oauth_token, $oauth_token_secret); 
$user = $connection->get("account/verify_credentials"); 

Bitte helfen Sie mir, was das Problem mit meinem Code ist. Ich habe gelesen, dass das Zugriffs-Token nicht abläuft. Also, was ist falsch mit meinem aktuellen Szenario ..

Antwort

0

Sie müssen access_token_secret nicht manuell zuweisen, wie sie generiert werden. Zunächst möchten Sie vielleicht einen Ausdruck hinzufügen, falls die in der URL angegebene URL oauth_token nicht dieselbe ist wie die gespeicherte oauth_token in der Sitzung zu dem Zeitpunkt, zu dem Sie eine Anfrage stellen.

if ($_SESSION['oauth_token'] !== $_REQUEST['oauth_token']) { 
    echo 'Oauth token does not match!'; 
    exit(); 
} 

sie sind Spiel Unter der Annahme, schaffen nun, eine Verbindung mit oauth_token und oauth_token_secret, die auf Sitzung gespeichert.

$connection = new TwitterOAuth($consumer_key, $consumer_secret, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); 

Die obige Verbindung wird nur zur Überprüfung Ihres Zugriffstokens erstellt. Überprüfen Sie es jetzt mit $_REQUEST['oauth_verifier'], die auf Ihrem Callback-URL-Parameter angezeigt wird.

$access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier'])); 

Danach wurde Ihr Zugriffstoken jetzt verifiziert. Sie können sie entweder in der Sitzung speichern (Sitzung vorher überschreiben oder eine neue Sitzung erstellen) oder in der Datenbank speichern.

//Verified access token 
$oauth_token = $access_token['oauth_token']; 
$oauth_token_secret = $access_token['oauth_token_secret']; 

Da es verifiziert wurde, sollten Sie jetzt eine weitere Verbindung zum Spielen erstellen. Genau wie das, was Sie tun, nach den Anmeldeinformationen des Accounts suchen.

$newConnection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $oauth_token, $oauth_token_secret); 
$user = $newConnection->get("account/verify_credentials"); 

$add = "INSERT INTO users SET 
     name = '".$user->name."', 
     username = '".$user->screen_name."', 
     oauth_token = '".$oauth_token."', 
     oauth_token_secret = '".$oauth_token_secret."', 
     id_string = '".$user->id_str."', 
     status = '1' "; 

Beachten Sie, dass ich oauth_verifier entfernen, da Sie es nicht benötigen. Die Verwendung dient nur dazu, ein nicht verifiziertes Zugriffstoken zu überprüfen, genauso wie Sie eine neue Anfrage zum ersten Mal erstellen.

Und zuletzt können Sie das letzte Snippet folgen, um eine andere Verbindung vom Zugriffstoken zu öffnen, das in der Datenbank gespeichert ist.

+0

Sir, das ist das letzte Snippet, um eine andere Verbindung vom Zugriffstoken zu öffnen, die in db gespeichert ist. aber es gibt mir immer Fehler. :( –

+0

Sie müssen Ihren Rückruf neu schreiben, wie ich poste. Haben Sie es getan? – Chay22

+0

jawohl, ich habe das auch getan ... –