使用PHP表单更新Twitter状态

I have the following code, but it doesn't update my status (the username and password has been removed for this snippet) and it throws the error eeek. Any ideas why it's not working?

EDIT:

Apparently Twitter NEEDS OAuth instead now. I have been following this tutorial here: http://ditio.net/2010/06/07/twitter-php-oauth-update-status/

I have registered my App and copied both the Library and Tokens over.

BUT I'm not sure how to get this working with my current code, ie. what needs changing/adding/removing.

My Updated code:

<?php

    function postToTwitter($username,$password,$message)
    {

        require_once 'TwitterOAuth.php';

        define("CONSUMER_KEY", "???");
        define("CONSUMER_SECRET", "???");
        define("OAUTH_TOKEN", "???");
        define("OAUTH_SECRET", "???");

        $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET);
        $content = $connection->get('account/verify_credentials');

        $connection->post('statuses/update', array('status' => date(DATE_RFC822)));

        // GET the API url via web authentication
        // add 'status' param to send a message to Twitter

        $host = "http://api.twitter.com/1/statuses/update.xml?status=".urlencode(stripslashes(urldecode($message)));

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $host);
        curl_setopt($ch, CURLOPT_VERBOSE, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));

        curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_POST, 1);

        // Go for it!!!
        $result = curl_exec($ch);
        // Look at the returned header
        $resultArray = curl_getinfo($ch);

        // close curl
        curl_close($ch);

        //echo "http code: ".$resultArray['http_code']."<br />";

        if($resultArray['http_code'] == "200"){
            echo "<br />OK! posted to http://twitter.com/".$username."/<br />";
        } else {
            echo "eek! yegads! error posting to Twitter";
        }

        // debug the result
        // echo "<pre>";
        // print_r($resultArray);
        // echo "</pre><hr>";

        // $sResult = htmlentities($result);
        // $sResult = str_replace("&gt;&lt;","&gt;<br />&lt;",$sResult);

        // echo "<pre>";
        // print $sResult;
        // echo "</pre>";

    }

    if(isset($_POST['submit']))
    {
        $textmessage = $_POST['message'];
        postToTwitter("whiningwall","u0558234",$textmessage);
    }

?><!DOCTYPE html>
<html lang="en">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=1024">
        <title></title>
        <link rel="stylesheet" type="text/css" href="master.css" media="screen" />
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
    </head>

    <body>

        <form id="post" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

            <fieldset>

                <label for="textArea">What's on your mind?</label>
                <textarea id="textArea" name="message" maxlength="140"></textarea>

                <div class="submit">
                    <span class="charsRemaining"></span>
                    <input type="submit" name="submit" value="Share" />
                </div>

            </fieldset>

        </form>

        <script type="text/javascript" src="jquery.maxlength.js"></script>
        <script type="text/javascript">
            $('#textArea').focus();
        </script>

    </body>
</html>
dragon8002
dragon8002 任何更新?想尽快得到这份工作。再次感谢你。
大约 10 年之前 回复
dougangxin5695
dougangxin5695 如果有人能够帮助更新OAuth代码,那将是非常棒的。谢谢
大约 10 年之前 回复

1个回答



我认为CURLOPT_USERPWD用于Apache的基本身份验证,Twitter不使用。 我对Twitter API了解不多,但我认为你最好用OAuth告诉Twitter你是谁。</ p>

编辑添加:在 http://code.google.com/p/php-twitter/ 您可能会尝试 看着(甚至使用)。</ p>
</ div>

展开原文

原文

I believe that CURLOPT_USERPWD is for Apache's basic authentication, which Twitter does not use. I don't know much about the Twitter API but I think you'll be better off using OAuth to tell Twitter who you are.

Edit to add: There's GPL twitter library at http://code.google.com/p/php-twitter/ that you might try looking at (or even using).

dongsi4815
dongsi4815 更新了我的问题。 您是否能够帮助我让OAuth使用我的代码。
大约 10 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐