Twitter APIを使ってみたいと思い自分なりに調べてみて、ようやく一つの方法がうまくいくところまで行きました。
参考にしたサンプル
https://github.com/twitterdev/Twitter-API-v2-sample-code/blob/main/Recent-Search/recent_search.js
その1:日本語検索ができない。
サンプルをダウンロードして、queryを日本語にして実行してみると以下のようなエラーが返ってきました。
{
errors: [
{
parameters: { query: [ '�����Q�[�Z��' ] },
message: "There were errors processing your request: no viable alternative at input '[' (at position 8)"
}
],
title: 'Invalid Request',
detail: 'One or more parameters to your request was invalid.',
type: 'https://api.twitter.com/2/problems/invalid-request'
}
原因は~~.jsファイルがSJISだったため、UTF-8で保存しなおしたら、解決しました。
その2:ツイートの埋め込みにユーザー名が必要なのか?
ツイートの埋め込みは以下のようなHTMLでできる。
<blockquote class="twitter-tweet">
テキスト
<a href="https://twitter.com/[ユーザー名]/status/[id]">tweet</a>
</blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
Twitter APIでとれる情報は
・author_id
・id
・text
のみなので、author_idからユーザー名をとる処理が必要なのか?と思いましたが、
https://twitter.com/[author_id]/status/[id]
でもツイートは表示されたため、そのまま使えました。
実際のHTML(EJS)には以下のようにしました。
<% twitter_items.forEach((twitter_item) => { %>
<blockquote class="twitter-tweet">
<%= twitter_item.text %>
<a href= "<%= 'https://twitter.com/'+twitter_item.author_id+'/status/'+twitter_item.id%>">tweet</a>
</blockquote>
<% }) %>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>