Ich versuche, das access_token eines Benutzers zu erhalten, der meiner twitter-App gerade die Berechtigung erteilt hat. Wenn ich mich anmelde, funktioniert es, merkt sich aber erst mein access_token, bis ich auffrische oder auf eine Schaltfläche klicke.Abrahams TwitterOAuth access_token verschwindet nach der Aktualisierung oder dem Klicken auf die Schaltfläche
Code, ich verwende:
require(__DIR__ . '/../../lib/data/twitter-login-api/autoload.php');
use Abraham\TwitterOAuth\TwitterOAuth;
$oauth_callback = OAUTH_CALLBACK;
$consumer_key = OAUTH_KEY;
$consumer_secret = OAUTH_SECRET;
//Do something if $_REQUEST occur and previous session is equal to current $_REQUEST
if (isset($_REQUEST['oauth_token']) && $_SESSION['oauth_token'] === $_REQUEST['oauth_token']) {
//Open first connection at callback
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
//Then verify your token
$access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));
//Now you can save them
$_SESSION['new_session_for_oauth_token'] = $access_token['oauth_token'];
$_SESSION['new_session_for_oauth_token_secret'] = $access_token['oauth_token_secret'];
//You may also check it first
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $_SESSION['new_session_for_oauth_token'], $_SESSION['new_session_for_oauth_token_secret']);
$check = $connection->get("account/verify_credentials");
$username = $check->name;
//To echo your account's stat
echo '<p>' . $check->statuses_count . '</p>';
echo '<p>' . $check->friends_count . '</p>';
echo '<p>' . $check->followers_count . '</p>';
echo '<p>' . $check->favourites_count . '</p>';
//And finally unset previous sessions
unset($_SESSION['oauth_token']);
unset($_SESSION['oauth_token_secret']);
//this is the end of callback url
} else {
$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'];
$twitter_url = $connection->url("oauth/authorize", array("oauth_token" => $request_token['oauth_token']));
}
Es protokolliert mich in einer Zeit, und ich erhalte die access_token und access_token_secret aber ich brauche sie in einer Sitzung zu bleiben, damit ich es auch nach einer Seite verwenden kann Aktualisieren oder klicken Sie auf eine Schaltfläche.
Was mache ich falsch?
Vielen Dank für Ihre schnelle Antwort @ Chay22. Ich habe meinen Code in das Beispiel geändert, das Sie mir gegeben haben. Es meldet mich perfekt an, aber verliert immer noch den access_token beim Aktualisieren der Seite. Und ja, ich benutze eine PHP-Datei, um den Login und Callback zu handhaben. Das ist möglich, oder? Ich habe den Code oben auf den Code geändert, den ich gerade benutze. Es muss einen Weg geben, um das richtig zu machen? – TomHoevenaars
Es ist immer besser, verschiedene Logiken für jede Datei zu trennen, aber in diesem Zustand ist es nur eine Frage des Stils. Wie hast du die Sitzung wiederverwendet? Aktualisieren Sie einfach diese Rückruf/Anforderungsseite? Es wird nicht funktionieren, da der Zweck dieser Seite nur darin besteht, ein Token anzufordern und zu verifizieren. Holen Sie sich eine andere Seite, starten Sie eine Sitzung, erstellen Sie eine neue Verbindung, lassen Sie es mich wissen. – Chay22
Nun, wenn ich richtig bin, muss es eine Möglichkeit geben, dieses access_token in einer Sitzung zu behalten. Die PHP-Datei, die ich für diesen Twitter-Login verwende, ist in der Datei enthalten, in der sich mein HTML befindet. Wenn ich auf eine Schaltfläche klicke, leite ich mich auf twitter_url um, wo ich meine App autorisieren muss. Danach erscheint mein Name (weil ich eingeloggt bin). Ich erhalte auch das access_token und access_token_secret. Als ich diesen Teil repariert habe, möchte ich einen Tweet im Namen dieses Accounts posten, der eingeloggt ist. – TomHoevenaars