Twitter亚伯拉罕twitteroauth不断要求许可

Dan*_*Dan 1 php twitter twitter-oauth

我正在使用abraham/twitteroauth允许用户通过他们的Twitter帐户登录.目前我可以创建链接,让他们转到链接,授权应用程序使用他们的详细信息,返回到网站并按user_id预期保存他们和访问令牌.

这很好并且效果很好,但是当用户注销(清除会话,cookie等)然后单击"使用Twitter登录"按钮时,它会再次请求他们获得他们的许可,即使该应用已经注册了他们的应用程序并拥有该权限.它不应该只是再签名吗?

使用Code Igniter 生成登录链接,因此忽略语法

$connection = new TwitterOAuth(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET);

$request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => RETURN_WEBSITE_URL));

$twitterOauth = array(
    "oauth_token" => $request_token['oauth_token'],
    "oauth_token_secret" => $request_token['oauth_token_secret'],
);

$this->session->set_userdata($twitterOauth);
$this->twitterLoginUrl = $connection->url('oauth/authorize', array('oauth_token' => $request_token['oauth_token']));
Run Code Online (Sandbox Code Playgroud)

返回功能

$request_token = [];
$request_token['oauth_token'] = $this->session->userdata('oauth_token');;
$request_token['oauth_token_secret'] = $this->session->userdata('oauth_token_secret');;

if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) {
    die("This isn't right.");
}

$connection = new TwitterOAuth(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, $request_token['oauth_token'], $request_token['oauth_token_secret']);
$access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

abr*_*ham 9

Twitter API支持两种登录流程.三方授权使用Twitter登录.它们之间的主要区别是如果用户之前已经授权该应用程序,则使用Twitter登录将自动重定向回应用程序.

技术上的区别在于,使用GET oauth/authenticate登录时,3-legged使用GET oauth/authorize.

您的代码实现了GET oauth/authorize,因此预计用户每次都必须进行授权.如果您不希望返回用户进行授权,则必须切换到GET oauth/authenticate.