2011-03-24 2 views
1

나는 꽤 많은이 튜토리얼을 http://net.tutsplus.com/tutorials/php/how-to-authenticate-users-with-twitter-oauth/누군가가 트위터에 상태를 게시하는 데 도움을 줄 수 있습니까?

을 다음 그리고 난 내가 내 상태의 타임 라인으로하지만 난 상태를 게시 할 수 없습니다 어떤 이유로뿐만 아니라 그것을 호출 할 때 내가 화면 이름을 볼 수 있습니다 작업하는 모든 것을 갖추고 있습니다. 나는 인터넷에서 사방을 보았고 모든 사람들이 똑같은 방식으로 행동하지만 내 일은 일어나지 않습니다. 여기

내 twitter_oauth.php

<?php 
require("twitteroauth.php"); 
session_start(); 

if(!empty($_GET['oauth_verifier']) && !empty($_SESSION['oauth_token']) && !empty($_SESSION['oauth_token_secret'])){ 
    $twitteroauth = new TwitterOAuth('consumerkey', 'otherkey', $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); 
    //request the access token 
    $access_token = $twitteroauth->getAccessToken($_GET['oauth_verifier']); 
    $_SESSION['access_token'] = $access_token; 
    $user_info = $twitteroauth->get('account/verify_credentials'); 
    //useful for seeing array key names 
    //print_r($user_info); 

    mysql_connect('localhost', 'usernamr', 'password'); 
    mysql_select_db(' database_twitter'); 

    if(isset($user_info->error)){ 
     header('Location: twitter_login.php'); 
    }else{ 
     //find the user by its ID 
     $query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'twitter' AND oauth_uid = ". $user_info->id); 
     $result = mysql_fetch_array($query); 

     //if it doesnt exist add 
     if(empty($result)){ 
      $query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username, oauth_token, oauth_secret) VALUES ('twitter', {$user_info->id}, '{$user_info->screen_name}', '{$access_token['oauth_token']}', '{$access_token['oauth_token_secret']}')"); 
      $query = mysql_query("SELECT * FROM users WHERE id = " .mysql_insert_id()); 
      $result = mysql_fetch_array($query); 
     }else{ 
      // Update the tokens 
     $query = mysql_query("UPDATE users SET oauth_token = '{$access_token['oauth_token']}', oauth_secret = '{$access_token['oauth_token_secret']}' WHERE oauth_provider = 'twitter' AND oauth_uid = {$user_info->id}"); 
     } 

      $_SESSION['id'] = $result['id']; 
      $_SESSION['username'] = $result['username']; 
      $_SESSION['oauth_uid'] = $result['oauth_uid']; 
      $_SESSION['oauth_provider'] = $result['oauth_provider']; 
      $_SESSION['oauth_token'] = $result['oauth_token']; 
      $_SESSION['oauth_secret'] = $result['oauth_secret'];       



      header('Location: twitter_update.php'); 
    } 
}else{ 
    header('Location:twitter_login.php'); 
} 
?> 

과를 heres가 업데이트되었는지 알아 내려고했지만 아무것도 찾을 수 있고 내가 추측하고있어

<?php 
require("twitteroauth.php"); 
session_start(); 
?> 
<h2>Hello <?php 
if(!empty($_SESSION['username'])){ 
    echo '@' .$_SESSION['username']; 
}else{ 
    echo 'Guest'; 
} 

if(!empty($_SESSION['username'])){ 
    $twitteroauth = new TwitterOAuth('key', 'key', $_SESSION['oauth_token'], $_SESSION['oauth_secret']); 
    $status_timeline = $twitteroauth->get('statuses/home_timeline', array('count' => 40)); 
    $content = $twitteroauth->get('account/verify_credentials'); 

    $twitteroauth->get('users/show', array('screen_name' => 'abraham')); 
    //$twitteroauth->post('statuses/update', array('status' => 'Testing out the twitter api with oauth')); 
    //print_r($status_timeline); 
    $twitteroauth->post('statuses/update', array('status' => "hello world")); 


} 
?> 
</h2> 

twitter_update.php입니다 그렇지 않다

답변

2

$_SESSION['access_token']twitter_oauth.php에 access_token을 저장하고 있지만 twitter_update.php에을 사용하고 있습니다.3210.

twitter_oauth.php 또한 사용자로 API에 요청하기 전에 access_token을 사용하여 새 TwitterOAuth 개체를 작성해야합니다.

액세스 토큰을 가져 오는 데 실패 할 경우에도 오류 처리가 없습니다.

+0

감사합니다. 아프지 만, 여러 가지를 시도해 봤습니다. 분명히 놓쳐 버렸을 것입니다. 너 oauth의 저자 야? –

+0

저는이 PHP 라이브러리의 저자입니다 만 OAuth 사양의 저자는 아닙니다. – abraham

+0

내가 무엇을 말했는지 확인하고 세션 이름을 변경 했으므로 아무 것도 움켜 잡을 수 없으므로 작동하지 않습니다. 상태를 올릴 필요가있는 게시물을 게시 할 수 없기 때문입니다. 나는 심지어 내 트위터 계정 연결을 확인하고 그것이 내 게시물 상태에 넣어 무엇을 보내고 내 응용 프로그램을 보여 주지만 그것을 짹짹하지 않는 이유는 무엇입니까? –

관련 문제