使用此PHP库:https://github.com/abraham/twitteroauth
$twitteroauth = new TwitterOAuth(OAUTH_TWITTER_CONSUMER_KEY, OAUTH_TWITTER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
$access_token = $twitteroauth->getAccessToken($_GET['oauth_verifier']);
$_SESSION['access_token'] = $access_token;
$user_info = $twitteroauth->get('account/verify_credentials');
有时会返回错误代码220
object(stdClass)#58 (1) {
["errors"]=> array(1) {
[0]=> object(stdClass)#59 (2) {
["message"]=> string(53) "Your credentials do not allow access to this resource"
["code"]=> int(220)
}
}
}
奇怪的是,有时它工作正常。此外,Twitter API v1从未发生过这种情况。它仅在更新到v1.1后才开始。
该应用不会尝试代表用户执行任何操作,也不会尝试获取任何信息,如时间轴或朋友列表。它只是试图验证用户。
当给出错误220时,我记录@_SESSION
,我得到了这个:
#1 有时会提供此
array(4) {
["oauth_token"]=> string(40) "SOME_RANDOM_STR_THAT_LOOKS_LIKE_A_TOKEN"
["oauth_token_secret"]=> string(41) "SOME_RANDOM_STR_THAT_LOOKS_LIKE_A_SECRETE_TOKEN"
["access_token"]=> array(1) {
["Invalid request token"]=> string(0) ""
}
[...] => array(...) {"OTHER_DATA_RELATED_TO_MY_WEBAPP"}
}
#2 有时这个
array(5) {
["oauth_token"]=> string(41) "xxxxxxxxx"
["oauth_token_secret"]=> string(41) "xxxxxxxxxx"
["access_token"]=> array(8) {
[string(144) ""1.0" encoding="UTF-8"?> Invalid / expired Token /oauth/access_token?oauth_consumer_key=xxxxxxxxxxxxx"
["oauth_nonce"]=> string(32) "xxxxxxxxx"
["oauth_signature"]=> string(28) "xxxxxxxxxxxxx"
["oauth_signature_method"]=> string(9) "HMAC-SHA1"
["oauth_timestamp"]=> string(10) "1388026884"
["oauth_token"]=> string(41) "xxxxxxxxx"
["oauth_verifier"]=> string(42) "xxxxxxxx"
["oauth_version"]=> string(22) "1.0 "
}
[...] => array(...) {"OTHER_DATA_RELATED_TO_MY_WEBAPP"}
["User"]=> array(7) {"ALSO_RELATED_TO_MY_WEBAPP"}
}
在这个#2场景中,User
在应用程序上有该用户的信息,它实际上有Twitter上的推特ID和头像等信息。这意味着该用户已经完全使用Twitter登录,webapp为他/她创建了一个帐户,但他/她现在正陷入这220错误。