Twitter abraham twitteroauth 不断请求许可
Twitter abraham twitteroauth constantly asking for permission
我正在使用 abraham / twitteroauth 允许用户通过他们的 Twitter 帐户登录。目前我可以创建 link,让他们转到 link,授权应用程序使用他们的详细信息,return 到网站并保存他们的 user_id
并按预期访问令牌。
这很好并且运行良好,但是当用户随后注销(清除会话、cookie 等)然后单击 "sign in with Twitter" 按钮时,它会再次请求他们的许可,即使应用程序已经在他们的应用程序中注册并拥有该权限。它不应该让他们重新登录吗?
登录link代使用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']));
Return函数
$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 支持两种登录流程。 3-legged authorization and Sign in with Twitter。它们之间的主要区别是如果用户之前已授权该应用程序,则使用 Twitter 登录将自动重定向回该应用程序。
技术上的区别在于三足使用GET oauth/authorize while Sign in with Twitter uses GET oauth/authenticate。
您的代码实现了 GET oauth/authorize,所以是的,预计用户每次都必须授权。如果您不想返回用户授权,您必须切换到 GET oauth/authenticate。
我正在使用 abraham / twitteroauth 允许用户通过他们的 Twitter 帐户登录。目前我可以创建 link,让他们转到 link,授权应用程序使用他们的详细信息,return 到网站并保存他们的 user_id
并按预期访问令牌。
这很好并且运行良好,但是当用户随后注销(清除会话、cookie 等)然后单击 "sign in with Twitter" 按钮时,它会再次请求他们的许可,即使应用程序已经在他们的应用程序中注册并拥有该权限。它不应该让他们重新登录吗?
登录link代使用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']));
Return函数
$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 支持两种登录流程。 3-legged authorization and Sign in with Twitter。它们之间的主要区别是如果用户之前已授权该应用程序,则使用 Twitter 登录将自动重定向回该应用程序。
技术上的区别在于三足使用GET oauth/authorize while Sign in with Twitter uses GET oauth/authenticate。
您的代码实现了 GET oauth/authorize,所以是的,预计用户每次都必须授权。如果您不想返回用户授权,您必须切换到 GET oauth/authenticate。