2011-08-31 3 views
0

트위터 API를 구현하는 데 문제가 있습니다. 나는 트위터에 연결 Abraham's method를 사용하고 있지만이 오류 얻을 : 이것은 내 코드입니다PHP Twitter API (아브라함) - 문제를 인증 할 수 없습니다.

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); 

     } 

나는이 이상 벽에 내 머리를 두드리는 한을, 그래서 어떤 제안이 크게 것 감사하겠습니다!

답변

4

먼저 TwitteroAuth 메서드를 초기화하면 Twitter에서 제공하는 consumer_key 및 consumer_secret도 전달해야합니다.

두 번째로 getAuthorizeURL 이후에 사용자는 자신의 정보에 대한 액세스를 허용하도록 사용자를 Twitter 웹 사이트로 리디렉션해야합니다.

사용자가 Twitter에서 자체 정보를 사용하도록 허용하면 Twitter에서 사용자를 콜백 페이지로 리디렉션합니다. 귀하의 예에서는 상수가 CURRURL 인 것을 포함합니다.

귀하의 URL에 oauth_tokenoauth_token_secret의 두 가지 새로운 정보가 전송되며이 경우 consumer_key, consumer_secret 및 theses 두 개의 새로운 매개 변수를 사용하여 TwitterOAuth를 다시 초기화하게됩니다. TwitterOAuth(key, secret, token, token_secret)

그리고에만 후에 내가 내 트위터 계정으로 새로운 응용 프로그램을 생성하고 코드를 테스트하는 고객 키와 비밀번호를 사용 $user_info = $to->get('account/verify_credentials');

0

다른 응용 프로그램 (또는 동일한 응용 프로그램의 다른 환경)에서 동일한 oauth 자격 증명을 다시 사용할 때 같은 오류 메시지 (Could not authenticate you.)로 비슷한 문제가 발생했습니다.

AFAIK Twitter는이 문제에 대해 매우 민감합니다. 트위터 계정에 새 응용 프로그램을 등록하여 문제가 있는지 확인하십시오.

+0

와 사용자 정보를 얻을 수 있습니다, 그러나 그것은 나에게 준 저장 오류 .. – dandoen

관련 문제