PHP Twitter API (Abraham's) - не удалось проверить подлинность проблемы - PullRequest
0 голосов
/ 31 августа 2011

У меня возникли некоторые проблемы с реализацией API Twitter. Я использую метод Абрахама для подключения к 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 ]

4 голосов
/ 31 августа 2011

Во-первых, когда вы инициализируете свой метод TwitteroAuth, вы должны также передать свои customer_key и consumer_secret, которые вам дает Twitter.

Во-вторых, после getAuthorizeURL вам нужно перенаправить пользователя на сайт Twitter, чтобы он мог принять вас к своей информации.

После того, как пользователь разрешает Twitter использовать собственную информацию, Twitter перенаправляет пользователя на вашу страницу обратного вызова. В вашем примере есть то, что содержит константу CURRURL.

Вы получите две новые информации с вашим URL-адресом oauth_token и oauth_token_secret, и вы снова инициализируете TwitterOAuth с этим, customer_key, consumer_secret и тезисом два новых параметра. TwitterOAuth(key, secret, token, token_secret)

И только после этого вы сможете получить информацию о пользователе с помощью $user_info = $to->get('account/verify_credentials');

0 голосов
/ 31 августа 2011

Однажды у меня была похожая проблема с тем же сообщением об ошибке (Could not authenticate you.) при повторном использовании одинаковых учетных данных oauth в разных приложениях (или даже в разных средах для одного и того же приложения).

AFAIK Twitter очень восприимчивпо этому поводу попробуйте зарегистрировать новое приложение в своей учетной записи Twitter, чтобы узнать, является ли это проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...