2015-11-07 1 views
2

У меня возникает ошибка при попытке использовать Twitter oauth2/invalidate_token. Ошибка: {«errors»: [{«code»: 99, «message»: «Не удалось проверить ваши учетные данные», «label»: «authenticity_token_error»}]}Twitter oauth2/invalidate_token Ошибка «Не удалось проверить ваши учетные данные», «authenticity_token_error»

Я использую TwitterAPIExchange. php wrapper, который вы можете найти here и here. Структура - Codeigniter 3.0, и этот код находится в методе, который вызывается AJAX (но я не думаю, что это имеет значение).

Вот мой код:

$settings = array(
    'oauth_access_token' => $this->session->userdata('oauth_token'), 
    'oauth_access_token_secret' => $this->session->userdata('oauth_token_secret'), 
    'consumer_key' => TWITTER_CONSUMER_KEY, 
    'consumer_secret' => TWITTER_CONSUMER_SECRET); 

$twitter = new TwitterAPIExchange($settings); 
$url = 'https://api.twitter.com/oauth2/invalidate_token'; 
$requestMethod = 'POST'; 
$postfields = array('access_token' => $this->session->userdata('oauth_token')); 
$response_str = $twitter->buildOauth($url, $requestMethod) 
       ->setPostfields($postfields) 
       ->performRequest(); 
$response_arr = []; 
parse_str($response_str, $response_arr); 

Содержание $ response_str это ошибка. Содержимое oauth_token и oauth_token_secret - это не приложение пользователя.

В качестве теста, когда я заменяю вызов oauth2/invalidate_token с помощью GET для статусов/user_timeline.json, он работает нормально. Поэтому кажется, что настройки правильные. Если я заменить соответствующие строки выше, оставьте настройки в покое, это работает отлично:

$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json'; 
$getfield = '?user_id=' . $uid; 
$requestMethod = 'GET'; 
$twitter = new TwitterAPIExchange($settings); 
echo $twitter->setGetfield($getfield) 
    ->buildOauth($url, $requestMethod) 
    ->performRequest(); 

This page in the docs переговоры об этой ошибке, в частности, но в контексте этого времени запроса приложения только в результате ошибки, но это не запрос приложения, и перечисленные причины, похоже, не применяются.

Любые идеи?

ответ

1

Найден ответ. Я вводил в заблуждение два понятия. Вызов oauth2/invalidate_token предназначен для токенов-носителей в случае проверки подлинности только для приложений, что теперь имеет смысл, почему ошибка регистрируется только для этого случая. Я хочу отменить токен пользователя, который, как я узнал, невозможен. Таким образом, единственный способ справиться с этим - притвориться, что отменил приложение на моей стороне и отслеживать это. Приложение все равно будет авторизовано в учетной записи пользователя Twitter. Для примера попробуйте Pinterest. Вы можете включить Twitter через Pinterest, и приложение Pinterest отобразится в вашей учетной записи Twitter. Если вы отключите приложение через Pinterest и снова посмотрите в своих приложениях Twitter, он все равно будет там. Другими словами, вы не отключили его. Я оставляю это здесь, если это помогает кому-то еще не тратить время на это. Кажется совершенно очевидным, что мы должны иметь возможность отменить приложение (например, Facebook позволяет это), но, похоже, вы не можете использовать Twitter. Если у кого-то есть больше или разные знания по этому вопросу, отправьте его.

+0

Знаки-носители и однотонные токены различны. И как указано [здесь] (https://dev.twitter.com/oauth/reference/post/oauth2/invalidate/token), конечная точка POST oauth2/invalidate_token' используется для отмены токена-носителя. Ошибки, относящиеся к этой конечной точке, документированы [здесь] (https://dev.twitter.com/oauth/application-only) в разделе ** Общие случаи ошибок ** внизу. –

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