すごく今更だけど、twitterのwidgetを使ってツイートを埋め込む方法的なお話。
ちなみに単純に埋め込むのではなくてAjaxでデータを取得して表示するみたいな。
ということでシンプルに方法でも。
■index.php(キーワードを投げて結果を取得)
//index.php <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> $(document).ready(function(){ $("#getTweet").on("click",function(e){ e.preventDefault(); $.ajax({ url:"searchTweet.php", type:"POST", dataType:"json", data:{ keyword:$("#keyword").val() }, beforeSend:function(){ $("#tweet").empty(); }, success:function(result){ var data = ""; if(result){ for(var i in result){ data += '<blockquote class="twitter-tweet" data-conversation="none"><a href="https://twitter.com/twitterapi/status/' + result[i] + '"></a></blockquote>'; } } $("#tweet").append(data); }, complete:function(result){ twttr.widgets.load(); } }); }); }); <input type="text" id="keyword"> <input type="button" id="getTweet" value="取得する"> <div id="tweet"></div>検索ボックスを置いて、そこに書いてある言葉をsearchTweet.phpに送って、
データをjsonで受け取って#tweet内にどんどん入れていく感じ。
ちなみにtwttr.widgets.load()っていうのが肝だったりする。
■searchTweet.php(ツイートを検索してjsonで出す)
//searchTweet.php $consumer_key = "xxx"; $cunsumer_secret = "xxx"; $accessToken = "xxx"; $accessToken_secret = "xxx"; $keyword = $_POST['keyword']; $values = array(); require_once("twitteroauth.php"); $twitter = new TwitterOAuth($consumer_key,$cunsumer_secret,$accessToken,$accessToken_secret); $json = $twitter->OAuthRequest( 'https://api.twitter.com/1.1/search/tweets.json', 'GET', array('q' => $keyword,'count' => '100') ); $obj = json_decode($json,true); foreach($obj['statuses'] as $result){ if(!isset($result['retweeted_status'])){ array_push($values,$result['id_str']); } } $flg = ($obj['search_metadata']['next_results'])?1:0; while($flg){ $json = $twitter->OAuthRequest( 'https://api.twitter.com/1.1/search/tweets.json'.$obj['search_metadata']['next_results'], 'GET', "" ); $obj = json_decode($json,true); foreach($obj['statuses'] as $result){ if(!isset($result['retweeted_status'])){ array_push($values,$result['id_str']); } } $flg = ($obj['search_metadata']['next_results'])?1:0; } print(json_encode($values));単純にツイートを検索する感じ。
ちなみにnext_resultsがあったら繰り返し処理をする形にして、全部取得するような感じ。
if(!isset($result['retweeted_status']))とやっているのは、
リツイートを含めないために必要だったりする。
こんな感じのものを用意すれば出来る。
twttr.widgets.load()は基本的に普通に埋め込むだけならば使う必要ないんだけど、
Ajaxで取得してきた場合だと単純にblockquoteを入れるだけになってしまうので叩いてあげる必要がある。
他の解説は正直面倒なので省略。
ブログに貼ると見栄え的にもよいのでこの埋め込むツイートは便利だと思う。
色んな使い道があるし、画像もプレビューしてくれるし。
ってことで使いたい人がいたらバシバシAjaxで取って使ってみればよいのではないかと。
0 件のコメント:
コメントを投稿