PHP Twitter API(亚伯拉罕) - 无法验证问题

时间:2011-08-31 07:45:08

标签: php twitter oauth

我在实施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);

        }

我一直在把头撞到墙上,所以任何建议都会非常感激!

2 个答案:

答案 0 :(得分:4)

首先,当您初始化方法TwitteroAuth时,您还要传递Twitter提供给您的consumer_key和consumer_secret。

其次,在getAuthorizeURL之后,您需要将用户重定向到Twitter网站,以允许他们接受您访问他们的信息。

用户允许Twitter使用自己的信息后,Twitter会将用户重定向到您的回调页面。在您的示例中包含常量CURRURL

您将通过您的网址oauth_tokenoauth_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帐户中注册一个新应用程序,看看这是否是问题。