1

こんにちはabraham / twitteroauth、ツイート API に使用しました

エラーを与える

実際、Twitterウィンドウは、oauth_tokenと秘密鍵を受け入れるときに許可を求めてきますが、投稿しようとするとそれを使用すると、このエラーが発生します。

Could not post Tweet. Error: 401 Reason: Could not authenticate you.

私のコードは以下のとおりです

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

} else{ echo "エラーが発生しました!"; } ?>

最初のページの HTML 部分

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

2ページ目

<?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>
4

1 に答える 1

3

リクエスト トークンをユーザー アカウントのアクセス トークンと交換する OAuth リクエストの 3 番目の部分を見逃しました。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;
    }
}

最初のファイルを上記のコードに置き換えます。

于 2011-02-02T07:46:31.740 に答える