我正在使用Twitter將用戶登錄到網站,這似乎正在努力,直到我試圖獲得有效的訪問令牌。爲什麼我的twitter oauth訪問令牌無效/過期
require("twitteroauth.php");
require 'twconfig.php';
session_start();
$twitteroauth = new TwitterOAuth(YOUR_CONSUMER_KEY, YOUR_CONSUMER_SECRET);
$request_token = $twitteroauth->getRequestToken('http://****/tw_response.php');
$oauth_token = $request_token['oauth_token'];
$_SESSION['oauth_token'] = $oauth_token;
$oauth_token_secret = $request_token['oauth_token_secret'];
$_SESSION['oauth_token_secret'] = $oauth_token_secret;
if ($twitteroauth->http_code == 200) {
url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']);
header('Location: '.$url);
} else {
die('Something wrong happened.');
}
這似乎是正常工作,重定向我到Twitter要登錄並確認訪問,之後返回我tw_response.php(我的回調URL),在URL中下列變量:
http://example.com/login.php?oauth_token=sO3X...yj0k&oauth_verifier=Ip6T...gALQ
在tw_response.php我然後嘗試獲取訪問令牌,但它報告爲無效。我試着用var_dump
如下查看訪問令牌的內容:
require("twitteroauth.php");
require 'twconfig.php';
session_start();
$oauth_verifier = $_REQUEST['oauth_verifier'];
$oauth_token = $_SESSION['oauth_token'];
$oauth_token_secret = $_SESSION['oauth_token_secret'];
$twitteroauth = new TwitterOAuth(YOUR_CONSUMER_KEY, YOUR_CONSUMER_SECRET, $oauth_token, $oauth_token_secret);
$access_token = $twitteroauth->getAccessToken($data['oauth_verifier']);
var_dump($access_token);
的var_dump
的結果「無效/到期令牌」結尾:
array(8) {
["oauth_url"] => string(104) ""1.0" encoding="UTF-8"?>/oauth/access_token?oauth_consumer_key=ceE...9Dg"
["oauth_nonce"]=> string(32) "c52...d07"
["oauth_signature"]=> string(28) "ry7...Fcc="
["oauth_signature_method"]=> string(9) "HMAC-SHA1"
["oauth_timestamp"]=> string(10) "1359031586"
["oauth_token"]=> string(40) "sO3...j0k"
["oauth_verifier"]=> string(43) "Ip6...ALQ"
["oauth_version"]=> string(63) "1.0 Invalid/expired Token "
}
這是用亞伯拉罕·威廉姆斯的圖書館嗎?看起來'getAccessToken(code)'只在您調用的頁面允許用戶訪問後輸入代碼時才起作用。我認爲當你使用回調網址時你需要使用這兩個信息。 – NoBugs
如果您使用有效的回調URL,則不需要使用憑證驗證'oauth_verifier'。無論如何檢查了這一點。 – Amelia
您的服務器時鐘是否正確運行? –