2015-05-01 60 views
0

我使用abraham/twitteroauth允許用戶通過他們的Twitter帳戶登錄。目前,我可以創建鏈接,讓他們進入鏈接,授權應用程序使用他們的詳細信息,返回網站並保存他們的user_id並按預期訪問令牌。Twitter亞伯拉罕twitteroauth不斷要求許可

這很好,但是,當用戶然後註銷(清除會話,cookie等),然後單擊「使用Twitter登錄」按鈕時,它會再次要求他們獲得他們的許可,即使應用程序已經在其應用程序中註冊並擁有該權限。它不應該只是再次簽署他們嗎?

登錄鏈接生成使用代碼點火器所以忽略語法

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

我在做什麼錯誤?

回答

9

Twitter API支持兩種登錄流程。 3-legged authorizationSign in with Twitter。它們之間的主要區別是,如果用戶先前已授權應用程序,則使用Twitter登錄會自動重定向迴應用程序。

技術上的區別在於三腳架的使用GET oauth/authorize雖然通過Twitter使用GET oauth/authenticate

你的代碼實現了GET oauth/authorize,所以是的,預計用戶每次都必須授權。如果您不希望返回用戶進行授權,則必須切換到GET oauth/authenticate。

+0

非常感謝,非常簡單的更改已將問題排序! – Dan

相關問題