2016-07-10 2 views
0

Привет им с помощью этого кода для получения oauth_token и oauth_token_secretTwitter возвращает [код] => 89 Я просто пытаюсь использовать второй раз, 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); 

и на моем обратного вызова URL-адрес это:

$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' "; 

, но когда после этого из базы данных, когда я пытаюсь войти в это дает мне

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

на каждом согл ess token im получает эту ошибку. Я использую этот код для 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"); 

Пожалуйста, помогите мне в чем проблема с моим кодом. Я прочитал tw не истекает токен доступа. так что что случилось с моим текущим сценарием.

ответ

0

Вам не нужно вручную назначать access_token_secret по мере их создания. Во-первых, внутри вашего обратного вызова вы можете добавить выражение на случай, если oauth_token, указанный в URL-адресе, не совпадает с сохраненным oauth_token в сеансе во время выполнения запроса.

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

Предполагая, что они совпадают, в настоящее время, создать соединение с oauth_token и oauth_token_secret, что хранится на сессии.

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

Выше соединение создано только для проверки токена доступа. Теперь проверьте его с помощью $_REQUEST['oauth_verifier'], который отображается на вашем URL-адресе обратного вызова.

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

После этого ваш токен доступа теперь проверен. Вы можете сохранить его в сеансе (предварительно перезаписать сеанс или создать новый) или в базу данных, как и вы.

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

Как уже было проверено, теперь вы должны создать другое соединение для игры. Как и то, что вы делаете, просматриваете учетные данные учетной записи.

$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' "; 

Обратите внимание, что я удалить oauth_verifier, как вам не нужно. Его использование заключается только в проверке непроверенного токена доступа, так же, как вы впервые создаете новый запрос.

И последнее, вы можете следить за последним фрагментом, чтобы открыть другое соединение из токена доступа, хранящегося в базе данных.

$oauth_token = $row['oauth_token_from_db']; 
$oauth_token_secret = $row['oauth_token_secret_from_db']; 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $oauth_token, $oauth_token_secret); 
+0

Этот вопрос является последним фрагментом, чтобы открыть другое соединение из токена доступа, хранящегося в db. но это всегда дает мне ошибку. :( –

+0

Вам нужно переписать свой обратный вызов, когда я отправляю его. – Chay22

+0

да, сэр, я тоже это сделал ... –

Смежные вопросы