【发布时间】:2015-07-26 21:38:21
【问题描述】:
我目前可以使用 Twitter API 将推文发布到我的 Twitter 帐户。我正在使用 cURL。但现在我想在预定的日期/时间发布推文。我知道这是可能的,但不知道怎么做?
代码:
<?php
$twitter_consumer_key = 'xxx';
$twitter_consumer_secret = 'xxx';
$twitter_access_token = 'xxx';
$twitter_access_token_secret = 'xxx';
$twitter_version = '1.0';
$sign_method = 'HMAC-SHA1';
$status="HelloWorld";
$url = 'https://api.twitter.com/1.1/statuses/update.json';
$param_string = 'oauth_consumer_key=' . $this->twitter_consumer_key .
'&oauth_nonce=' . time() .
'&oauth_signature_method=' . $this->sign_method .
'&oauth_timestamp=' . time() .
'&oauth_token=' . $this->twitter_access_token .
'&oauth_version=' . $this->twitter_version .
'&status=' . rawurlencode($status);
//Generate a signature base string for POST
$base_string = 'POST&' . rawurlencode($url) . '&' . rawurlencode($param_string);
$sign_key = rawurlencode($this->twitter_consumer_secret) . '&' . rawurlencode($this->twitter_access_token_secret);
//Generate a unique signature
$signature = base64_encode(hash_hmac('sha1', $base_string, $sign_key, true));
$curl_header = 'OAuth oauth_consumer_key=' . rawurlencode($this->twitter_consumer_key) . ',' .
'oauth_nonce=' . rawurlencode(time()) . ',' .
'oauth_signature=' . rawurlencode($signature) . ',' .
'oauth_signature_method=' . $this->sign_method . ',' .
'oauth_timestamp=' . rawurlencode(time()) . ',' .
'oauth_token=' . rawurlencode($this->twitter_access_token) . ',' . 'oauth_version=' . $this->twitter_version;
$ch = curl_init();
//Twitter post
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: ' . $curl_header));
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'status=' . rawurlencode($status));
$twitter_post = json_decode(curl_exec($ch));
curl_close($ch);
print_r($twitter_post);
?>
我需要进行哪些更改才能在预定日期/时间发布推文
【问题讨论】:
-
嘿,这有点离题了,但是对于任何想要使用您的代码的人来说,就像我刚才所做的那样,缺少两件事。首先 curl_setopt($ch, CURLOPT_URL, $url);是需要的。第二个 curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);在 $postData 应该等于 status=' 的地方是必需的。 rawurlencode($status),否则你会得到“无法验证你”的错误。
-
哦,是的,谢谢,我已经更新了。
标签: php curl twitter cron cron-task