dongshan3806 2010-10-20 23:37 采纳率: 0%
浏览 43

使用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>
  • 写回答

1条回答 默认 最新

  • duanbai1974 2010-10-20 23:44
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog