2013-03-25 85 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工作)