#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 регулярно взаимодействует с разработчиками здесь.