Я потратил на это кучу часов и не могу понять, в чем здесь проблема.Я пишу свое собственное твиттер-приложение.Я скачал OAuth PHP Library, которую я использую.Все было настроено правильно.
Я сделал Шаг 1 и «Получить токен запроса».Я получил верный ответ с токеном, секретом токена и подтверждением обратного вызова TRUE.
Теперь я перешел к следующему шагу «Отправить пользователя в авторизацию» и передал параметр oauth_token в запрос.Запрос был отправлен и перенаправлен на страницу Twitter, но когда он появляется, отображается сообщение об ошибке:
Запрос на исключение не выполнен с кодом 403. Вау!Эта страница требует некоторой информации, которая не была предоставлена.Пожалуйста, вернитесь на сайт, который отправил вас на эту страницу, и попробуйте еще раз ... это, вероятно, было честной ошибкой.В чем проблема??Сообщение об ошибке не очень полезно.Согласно Twitter 403 означает, что запрос был понят, но отклонен.Я действительно застрял здесь и был бы признателен за помощь в этом.
Вот как выглядит код (очевидно, я заменял свой токен и секретные ключи на ########, поэтому, если кто-то хочет проверить это локально своими собственными ключами, просто замените значения #########:
<?php
include_once "scripts/OAuth/OAuthStore.php";
include_once "scripts/OAuth/OAuthRequester.php";
// register at http://twitter.com/oauth_clients and fill these two
define("TWITTER_CONSUMER_KEY", "#############");
define("TWITTER_CONSUMER_SECRET", "#############");
define("TWITTER_OAUTH_HOST","https://api.twitter.com");
define("TWITTER_REQUEST_TOKEN_URL", TWITTER_OAUTH_HOST . "/oauth/request_token");
define("TWITTER_AUTHORIZE_URL", TWITTER_OAUTH_HOST . "/oauth/authorize");
define("TWITTER_ACCESS_TOKEN_URL", TWITTER_OAUTH_HOST . "/oauth/access_token");
define("TWITTER_PUBLIC_TIMELINE_API", TWITTER_OAUTH_HOST . "/statuses/public_timeline.json");
define("TWITTER_UPDATE_STATUS_API", TWITTER_OAUTH_HOST . "/statuses/update.json");
define('OAUTH_TMP_DIR', function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : realpath($_ENV["TMP"]));
// Twitter test
$options = array('consumer_key' => TWITTER_CONSUMER_KEY, 'consumer_secret' => TWITTER_CONSUMER_SECRET);
OAuthStore::instance("2Leg", $options);
try
{
// Obtain a request object for the request we want to make
$request = new OAuthRequester(TWITTER_REQUEST_TOKEN_URL, "POST");
$result = $request->doRequest(0);
parse_str($result['body'], $params);
list($token, $secret, $status) = explode('&', $result['body']);
// now make the request.
$request = new OAuthRequester(TWITTER_AUTHORIZE_URL, 'POST', $token);
$result = $request->doRequest();
}
catch(OAuthException2 $e)
{
echo "Exception " . $e->getMessage();
}
?>