【Node.js】Twitter-API-v2 でハッシュタグ検索をするのに躓いたこと。

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>

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA