2013-03-25 86 views
2

我在我的網站上有一個用戶可以編輯的textarea,最多140個字符。我有兩個提交按鈕 - 一個發佈到Facebook,一個發佈到Twitter。我能夠得到Facebook按鈕工作正常,但我堅持Twitter按鈕的一半。PHP在Twitter上發佈使用oAuth

當用戶點擊按鈕發送推文時,我只能將它發送到我自己的帳戶。我希望這個去用戶的帳戶。我意識到這是因爲我在我的PHP中定義了oAuthToken/Secret,但我不確定如何請求用戶登錄/授權我的應用程序,因此創建和使用他們的oAuth信息。我似乎無法在這裏或其他任何地方找到適合我的答案,所以一些幫助或正確方向上的一點會很棒!

這裏是我到目前爲止的代碼:

<?php if($_SERVER['REQUEST_METHOD'] == "POST") { ?> 

       <?php $statusupdate = $_POST['text']; ?>  
       <?php $socialsubmit = $_POST['socialsubmit']; ?>      

       <?php if($socialsubmit == "share") { ?> 
       <div id="fb-root"></div> 
       <script> 
        window.fbAsyncInit = function() { 
         FB.init({ 
         appId  : '182922938522212', // App ID 
         channelUrl : 'channel.html', // Channel File 
         status  : true, // check login status 
         cookie  : true, // enable cookies to allow the server to access the session 
         xfbml  : true // parse XFBML 
         }); 
         FB.ui({ 
         method: 'feed', 
         name: 'Minty Delivers', 
         caption: 'Same Day Grocery Delivery in Halifax', 
         description: '<?php echo $statusupdate; ?>', 
         link: 'http://www.mintydelivers.com', 
         picture: 'http://www.mintydelivers.com/connect-share.png' 
         }); 
        };      
        // Load the SDK Asynchronously 
        (function(d){ 
         var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
         if (d.getElementById(id)) {return;} 
         js = d.createElement('script'); js.id = id; js.async = true; 
         js.src = "//connect.facebook.net/en_US/all.js"; 
         ref.parentNode.insertBefore(js, ref); 
        }(document)); 

       </script> 
       <?php echo $socialsubmit;?> 
       <?php } else if($socialsubmit == "tweet") { ?> 
        <?php 
        $consumerKey = 'xxx'; 
        $consumerSecret = 'xxx'; 
        $oAuthToken  = 'xxx'; 
        $oAuthSecret = 'xxx'; 

        require_once('tw/twitteroauth.php'); 

        // create a new instance 
        $tweet = new TwitterOAuth($consumerKey, $consumerSecret, $oAuthToken, $oAuthSecret); 

        //send a tweet 
        $tweet->post('statuses/update', array('status' => $statusupdate)); 
        ?> 
        <div class="alert alert-success"> 
          Your tweet was successfully posted. Thanks for sharing! 
        </div> 
       <?php } ?> 
      <?php } ?> 

      <form id="status-update" action=""; method="post"> 
       <textarea name="text" onKeyPress="return charLimit(this)" onKeyUp="return characterCount(this)">I found this GREAT company called Minty that delivers groceries, wine, flowers and gifts anywhere in Halifax! www.mintydelivers.com</textarea> 

      <p><span id="charCount">9</span> characters left</p> 

      <button id="twitter" class="tweetpopup" name="socialsubmit" value="tweet" type="submit">Tweet This</button> 

      <button id="facebook" name="socialsubmit" value="share" type="submit">Share This</button> 
      </form><!-- end form --> 
+1

試試這個 - http://designspicy.com/learn-how-to-post-on-twitter-using-php-和OAuth的/ – 2014-10-15 07:54:01

回答

1

用戶需要授權您的應用鳴叫代表他們。這涉及將他們重定向到Twitter並讓他們授予您的應用程序訪問權限。有關這個主題的Twitter的文檔是在這裏:要實現這一行爲在PHP是通過Temboo的OAuth包裝

https://dev.twitter.com/docs/auth/obtaining-access-tokens

一個簡單的方法。 Temboo將OAuth進程分爲兩個調用,InitializeFinalize,其中第一個返回您需要引導用戶訪問的Twitter授權URL。該流程的第二步將返回您代表用戶發送鳴叫所需的訪問令牌。您可以從Temboo網站測試Twitter OAuth,然後通過Temboo PHP SDK在代碼中使用它。

https://www.temboo.com/library/Library/Twitter/OAuth/

(全面披露:我在Temboo工作)