はじめに
TwitterのPHP用OAuthライブラリ「twitteroauth」を用いてTwitterのbotを作ることができます。しかし、元のファイルのままでは、画像のアップロード(statuses/update_with_media)に対応していません。
そこで、twitteroauthで画像のアップロードに対応させる方法を書き留めておきます。
Contents
①変更ファイル確認
「こちら」からダウンロードしたフォルダの
twitteroauth-master/twitteroauth/twitteroauth.php
このファイルを少し変更します。
②画像アップロード関数の追加
では、具体的に変更する箇所を見ていきましょう。
まず、次の関数を付け足します。oAuthRequest関数の次あたりにでも追加してください。
function oAuthRequestImage($url, $method = NULL ,$args = array()) { $req = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, array()); $req->sign_request($this->sha1_method, $this->consumer, $this->token); return $this->http($req->get_normalized_http_url(), $method,$args, $req->to_header()); }
③http関数の変更
次に、変更前のファイルでいう197行目あたりにあるhttp関数
//197行目あたり function http($url, $method, $postfields = NULL) { $this->http_info = array(); $ci = curl_init(); /* Curl settings */ curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent); curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout); curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout); curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:')); curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer); curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader')); curl_setopt($ci, CURLOPT_HEADER, FALSE); //以下略
を次のように変更してください。
function http($url, $method, $postfields = NULL, $header = '') {//「$header = ''」を追加 $this->http_info = array(); $ci = curl_init(); /* Curl settings */ curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent); curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout); curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout); curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:',$header));//「$header」を追加 curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer); curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader')); curl_setopt($ci, CURLOPT_HEADER, FALSE); //以下略
焦点を当てて見ると、変更箇所は次の2か所です。
//1か所目 function http($url, $method, $postfields = NULL) { //↓197行目を以下に変更↓ function http($url, $method, $postfields = NULLL, $header = '') { //2か所目 curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:')); //↓205行目を以下に変更↓ curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:',$header));
これで画像のアップロードが可能になりました!
意外と情報が見つからなくて困った(>_<)
コメントを残す
コメントを投稿するにはログインしてください。