我在实施twitter api方面遇到了一些问题。我使用Abraham's method连接到Twitter但我收到此错误:
object(stdClass)#25 (2) {
["error"]=>
string(27) "Could not authenticate you."
["request"]=>
string(302) "/1/account/verify_credentials.json?oauth_consumer_key=79CrBl2oYlaATF7YOn0New&oauth_nonce=014df8945398b9605b78703829f93c45&oauth_signature=7OnRBeraaGxXgLbTNQ3%2BFdMAIPs%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1314776180&oauth_token=U7iPIyqv7IJyq1VkvKsf06KE6KQOtVDPBEwwqRjhg&oauth_version=1.0"
}
这是我的代码:
$to = new TwitterOAuth();
$tok = $to->getRequestToken(CURRURL);
$request_link = $to->getAuthorizeURL($tok);
$_SESSION['oauth_access_token']= $tok['oauth_token'];
$_SESSION['oauth_access_token_secret'] = $tok['oauth_token_secret'];
if ((!isset($_SESSION['oauth_access_token'])) || ($_SESSION['oauth_access_token'])=='') {
$to = new TwitterOAuth($_SESSION['oauth_access_token'], $_SESSION['oauth_request_token_secret']);
$token_credentials = $to->getAccessToken($_REQUEST['oauth_verifier']);
$_SESSION['oauth_access_token'] =$token_credentials['oauth_token'];
$_SESSION['oauth_access_token_secret'] = $token_credentials['oauth_token_secret'];
} else {
$connection = new TwitterOAuth($access_token['oauth_token'], $access_token['oauth_token_secret']);
$user_info = $to->get('account/verify_credentials');
//die(var_dump($user_info));
$data = array(
"twitter" => array(
"oauth_provider" => "twitter",
"oauth_uid" => $user_info->id,
"first_name" => $user_info->name,
"last_name" => "",
"username" => $user_info->screen_name,
"email" => "",
"gender" => "",
"hometown" => "",
"location" => $user_info->location
)
);
array_push($social,$data);
}
我一直在把头撞到墙上,所以任何建议都会非常感激!
答案 0 :(得分:4)
首先,当您初始化方法TwitteroAuth
时,您还要传递Twitter提供给您的consumer_key和consumer_secret。
其次,在getAuthorizeURL
之后,您需要将用户重定向到Twitter网站,以允许他们接受您访问他们的信息。
用户允许Twitter使用自己的信息后,Twitter会将用户重定向到您的回调页面。在您的示例中包含常量CURRURL
。
您将通过您的网址oauth_token
和oauth_token_secret
收到两条新信息,然后您将使用此消息,consumer_key,consumer_secret以及两个新参数再次初始化TwitterOAuth。 TwitterOAuth(key, secret, token, token_secret)
只有在此之后,您才能通过$user_info = $to->get('account/verify_credentials');
答案 1 :(得分:0)
在不同的应用程序(甚至是同一应用程序的不同环境)中重复使用相同的oauth凭据时,我曾遇到过类似的错误消息(Could not authenticate you.
)。
AFAIK Twitter对此非常敏感,尝试在您的Twitter帐户中注册一个新应用程序,看看这是否是问题。