Twitter OAuth продолжает перенаправлять на https://twitter.com/oauth/authenticate ?oauth_token=XYZ

#twitter #oauth #twitter-oauth

#Twitter #oauth #twitter-oauth

Вопрос:

Я думаю, что я правильно внедрил 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. вы делаете session_start() или сеансы автоматически запускаются каждый раз?

2. Я выполняю session_start(); но эта строка находится в другом месте включенного файла … (над кодом в кавычках)

3. Что именно вы ожидаете, что произойдет?

4. @abraham — ты абрахам из github.com/abraham/twitteroauth известность? 🙂 🙂 Мое приложение подключается к Twitter, но затем пользователю каждый раз предлагается авторизовать приложение — я не уверен, почему это происходит. Что я могу протестировать, чтобы диагностировать это подробнее?

5. @abraham — требуется помощь! 🙂 Конечно, он не может ожидать, что пользователь будет авторизовывать приложение каждый раз!

Ответ №1:

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

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

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