我使用的是带有CodeBird(PHP)的Twitter API。
以下是推特文档中的一句话:
因此,对于已经登录twitter.com并授权该应用程序的用户,不会显示任何UI,而是自动重定向回该应用程序。
如果用户已经登录到twitter.com并被授予访问该网站的权限,则会立即进行重定向。
https://dev.twitter.com/web/sign-in/desktop-browser
为什么这对我不起作用?Twitter每次都会询问用户的权限。
我获得授权的代码URL:
'Codebird'Codebird::setConsumerKey(
$this->config['twitter']['consumer_key'],
$this->config['twitter']['consumer_secret']
);
$cb = 'Codebird'Codebird::getInstance();
$reply = $cb->oauth_requestToken([
'oauth_callback' => 'https://***/login/twitter'
]);
$cb->setToken($reply->oauth_token, $reply->oauth_token_secret);
$this->session->twitter_oauth_token = $reply->oauth_token;
$this->session->twitter_oauth_token_secret = $reply->oauth_token_secret;
$this->session->twitter_oauth_verify = true;
return $this->redirect($cb->oauth_authorize());
已解决!
oauth_authorize将始终向用户请求权限。
oauth_authenticate将只请求一次,如果已授予访问权限,则将执行自动重定向。