Твиттер-вход oauth api продолжает перенаправлять меня на авторизацию приложения - PullRequest
2 голосов
/ 07 мая 2019

Я работаю с твиттером oauth, и у меня возникают проблемы с твиттером, требующие авторизации использования приложения, даже если я уже авторизовал его. Например, я разрешаю использование приложения, выхожу из системы, а затем захожу в логин для твиттера, он снова запрашивает у меня разрешение на использование приложения. Обратите внимание, что мой вопрос заключается в том, чтобы заставить меня авторизовать приложение, а не область аутентификации, которую я представляю, как только проблема авторизации будет решена, аутентификация в твиттере будет работать.

Расход должен быть:

1. / Пользователь авторизуется через твиттер.

2. / Twitter отправляет обратный вызов

3. / Обратный вызов выполняет взаимодействие с базой данных для сохранения пользователя и аутентификации пользователя с приложением

4. / Обратный звонок перенаправляет на домашнюю страницу

5. / Пользователь выходит из приложения (все данные сеанса уничтожены)

6. / Пользователь повторно входит в систему с помощью твиттера, и твиттер не должен выполнять повторную авторизацию, а должен распознавать пользователя и перенаправлять в приложение, которое должно каким-либо образом проходить аутентификацию из твиттера, возможно, сопоставляя токены oauth из базы данных?

Не уверен, что это применимо, но если я даже захожу в твиттер-логин сразу после авторизации, он все равно просит меня повторно авторизоваться

Вот мой код:

твиттер логин код

use Abraham\TwitterOAuth\TwitterOAuth;
$connection = new TwitterOAuth(twitter_apikey,twitter_apisecret);
$request_token= $connection->oauth('oauth/request_token', array('oauth_callback' => "https://example.com/twittercallback"));
$_SESSION['oauth_token']=$request_token['oauth_token'];
$_SESSION['oauth_token_secret']=$request_token['oauth_token_secret'];
$url = $connection->url("oauth/authorize", array("oauth_token" => $request_token['oauth_token']));
header('Location: '. $url);

А вот мой код обратного вызова:

<code>use Abraham\TwitterOAuth\TwitterOAuth;
$oauth_access_token = $_SESSION['oauth_token'];
$oauth_access_token_secret = $_SESSION['oauth_verifier'];
$connection = new TwitterOAuth(twitter_apikey,twitter_apisecret,$oauth_access_token , $oauth_access_token_secret );
$access_token = $connection->oauth('oauth/access_token', array('oauth_verifier' => $_REQUEST['oauth_verifier'], 'oauth_token'=> $_GET['oauth_token']));
$connection = new TwitterOAuth(twitter_apikey,twitter_apisecret, $access_token['oauth_token'], $access_token['oauth_token_secret']);
$user_info = $connection->get('account/verify_credentials',['include_email'=>'true']);
$oauth_token = $access_token['oauth_token'];
$oauth_token_secret = $access_token['oauth_token_secret'];
print "<pre>".print_r($user_info,true)."
";

1 Ответ

0 голосов
/ 16 мая 2019

Вам нужно перенаправить пользователя на https://api.twitter.com/oauth/authenticate вместо https://api.twitter.com/oauth/authorize

https://developer.twitter.com/en/docs/basics/authentication/api-reference/authenticate.html

Изменить эту строку

$url = $connection->url("oauth/authorize", array("oauth_token" => $request_token['oauth_token']));

до

$url = $connection->url("oauth/authenticate", array("oauth_token" => $request_token['oauth_token']));
...