Twitter OAuth продолжает перенаправлять на https://twitter.com/oauth/authenticate?oauth_token=XYZ - PullRequest
1 голос
/ 10 июня 2011

Я думаю, что я правильно внедрил twitter oauth, но каждый раз, когда пользователь нажимает кнопку для входа через Twitter на моем сайте, он перенаправляется на https://twitter.com/oauth/authenticate?oauth_token=XYZ, где ему предлагается снова авторизовать мое приложение .

Мой исходный код основан на: http://www.9lessons.info/2011/02/login-with-facebook-and-twitter.html, который сам кажется основанным на https://github.com/abraham/twitteroauth/tree/master/twitteroauth

$twitteroauth = new TwitterOAuth(TWITTER_KEY, TWITTER_SECRET);
// Requesting authentication tokens, the parameter is the URL we will be redirected to
$request_token = $twitteroauth->getRequestToken($site_url.'getTwitterData.php');

// Saving them into the session

$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];

// If everything goes well..
if ($twitteroauth->http_code == 200) {
    // Let's generate the URL and redirect
    $url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']);
    header('Location: ' . $url);
} else {
    // It's a bad idea to kill the script, but we've got to know when there's an error.
    die('The Twitter service is currently not responding. Please try again later.');
}
?>

В twitteroauth.php у меня ранее было:

   function accessTokenURL()  { return 'https://api.twitter.com/oauth/access_token'; }
   function authenticateURL() { return 'https://twitter.com/oauth/authenticate'; }
   function authorizeURL()    { return 'https://twitter.com/oauth/authorize'; }
   function requestTokenURL() { return 'https://api.twitter.com/oauth/request_token'; }

но затем попытался:

   function accessTokenURL()  { return 'https://api.twitter.com/oauth/access_token'; }
   function authenticateURL() { return 'https://api.twitter.com/oauth/authenticate'; }
   function authorizeURL()    { return 'https://api.twitter.com/oauth/authorize'; }
   function requestTokenURL() { return 'https://api.twitter.com/oauth/request_token'; }

, но не повезло.

1 Ответ

4 голосов
/ 01 июля 2011

Ответ. Уровень разрешений приложения, указанный на twitter.com, не соответствует тому, что мы делаем.

Сообщение из Twitter:

Если вы используете метод oauth / authenticateбез установки параметра force_login или screen_name, Twitter будет перенаправлять обратно на ваш сайт, если пользователь вошел в Twitter и уже имеет действительный токен доступа OAuth для вашего приложения.Если вы недавно изменили уровень разрешений вашего приложения (например, с чтения / записи на чтение / запись / DM), это перенаправление не произойдет, поскольку запрашивается новое разрешение.Если это не поможет, вы также можете написать об этом в нашей группе разработчиков: http://groups.google.com/group/twitter-development-talk.Наша команда разработчиков API регулярно взаимодействует с разработчиками.

...