繁体   English   中英

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

[英]Twitter abraham twitteroauth constantly asking for permission

我正在使用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']));

返回功能

$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']));

我做错了什么?

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

技术上的区别在于,三足式使用GET oauth / authize,而使用Twitter登录使用GET oauth / authenticate

您的代码实现了GET oauth / authorize,因此可以预料,用户每次都必须进行授权。 如果您不想让回访用户进行授权,则必须切换到GET oauth / authenticate。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM