2011-02-02 6 views
1

안녕 난 트윗 API트위터 API 제공 오류

에 대한 abraham/twitteroauth 사용했습니다는

실제로 트위터 창이 제공 권한을 요청 오류를 준다 내가 시도 할 때 게시하려면이 오류가 발생합니다.

내 코드가

2 파일

다른
<?php 
session_start(); 
require_once 'classes/twitteroauth.php'; 
define("CONSUMER_KEY", "XXXXXXXXXXXXXXXX"); 
define("CONSUMER_SECRET", "XXXXXXXXXXXXXXXXXXXXXXX"); 
if(isset($_SESSION["oauth_token"])){ 
    $ction = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, 
       $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); 
    $tweetmsg = 'Hello World, I am tweeting from my own twitter app!'; 
    $result = $ction->post('statuses/update', array('status' => $tweetmsg)); 
    $httpCode = $ction->http_code; 
    if ($httpCode == 200) { 
     $resultmsg = 'Tweet Posted: '.$tweetmsg; 
    } 
else { 
$resultmsg = 'Could not post Tweet. Error: '.$httpCode.' Reason: '.$result->error; 
} 

} { 에코 "어떤 빌어 먹을 오류!"아래에 주어진

; } ?>

당신은에 요청 토큰을 교환 할 수있는 OAuth를 요청의 3 부분을 놓친 첫 페이지

<html> 
<head> 
    <title>Twitter OAuth via popup</title> 
</head> 
<body> 
    <script src="jsjquery.min.js"></script> 
    <script src="js/jquery.oauthpopup.js"></script> 
    <script> 
    $(document).ready(function(){ 
     $('#connect').click(function(){ 
      $.oauthpopup({ 
       path: 'twitter.php', 
       callback: function(){ 
       alert("successfully Tweetted"); 
       window.location.reload(); 
       } 
      }); 
     }); 
     }); 
    </script> 
    <div> 
    <?php 
    echo $resultmsg; 
    ?> 
    </div> 
    <input type="button" value="Connect with Twitter" id="connect" /><br /> 
    <a href="signout.php">Sign Out</a> 
    </body> 
    </html> 

두 번째 페이지

<?php 
session_start(); 
require_once 'classes/twitteroauth.php'; 
if(!isset($_SESSION["oauth_token"])){ 
define("CONSUMER_KEY", "XXXXXXXXXXXXXXXX"); 
define("CONSUMER_SECRET", "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"); 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET); 
$request_token = $connection->getRequestToken(); 
$_SESSION['oauth_token'] = $request_token['oauth_token']; 
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; 
$url = $connection->getAuthorizeURL($request_token); 
header('Location:'.$url); 
die(); 
} 
?> 
<html> 
<head> 
<title>Share On Twitter</title> 
</head> 
<body> 
<script type="text/javascript"> 
window.close(); 
</script> 
</body> 
</html> 

답변

3

의 HTML PART 사용자 계정에 대한 액세스 토큰. documentation of twitteroauth에있는 # 7을 확인하십시오.

<?php 

session_start(); 
require_once 'classes/twitteroauth.php'; 
define("CONSUMER_KEY", "XXXXXXXXXXXXXXXX"); 
define("CONSUMER_SECRET", "XXXXXXXXXXXXXXXXXXXXXXX"); 

if(!$_SESSION['loggedin'] and $_SESSION['oauth_token']) { 
    # Exchange request token with access token 
    $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); 
    $token_credentials = $connection->getAccessToken($_REQUEST['oauth_verifier']); 
    $_SESSION['oauth_token'] = $token_credentials['oauth_token']; 
    $_SESSION['oauth_token_secret'] = $token_credentials['oauth_token_secret']; 
    $_SESSION['loggedin'] = true; 

} 
if($_SESSION['loggedin']) { 
    $ction = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); 
    $tweetmsg = 'Hello World, I am tweeting from my own twitter app!'; 
    $result = $ction->post('statuses/update', array('status' => $tweetmsg)); 
    $httpCode = $ction->http_code; 
    if ($httpCode == 200) { 
     $resultmsg = 'Tweet Posted: '.$tweetmsg; 
    } 
} 

첫 번째 파일을 위의 코드로 바꾸십시오.

+0

의심의 여지가 처음 함수에서 $ _SESSION [ 'oauth_token'], $ _SESSION [ 'oauth_token_secret']을 어떻게 얻을 수 있습니까? – Harish

+0

두 번째 페이지에서 임시 요청 토큰을 가져올 때 처음 설정됩니다. – Arvin

+0

한가지 주목할 점은 두 번째 페이지에서 $ connection-> getRequestToken()을 호출 할 때 콜백 URL을 지정하지 않았다는 것입니다. 응용 프로그램 설정에 콜백 URL이 이미 설정되어 있습니까? 첫 페이지로 설정되었다고 가정합니다. – Arvin