LoginSignup
1
1

More than 1 year has passed since last update.

twitter api v1からv2へ

Last updated at Posted at 2022-11-19

はじめに

いやー、大変だった。
今まで、twitter api v1.1でang12-twitterというのを作成していたのだが、これをtwitter api v2に移植しようかといろいろやって、今日、まあまあ筋道が見えたというご報告

twitter api v2とは

 twitter developerにいけば、説明がある。v1だと、検索結果が10個ぐらいしかとれなくなってしまったので、しかたがないので移植を行っているということ。
v1に比べて、restを利用できる回数が多いということだ。

Oauth2.0 with PKCE

 v2でめんどくさいのが、認証で、全ての機能を使いこなすには、Oauth2.0 PKCEをクリアするアプリを作らないといけない。ただ、まだ、この認証部分は作っていない。認証の中でもbearer_tokenを使えば、一部のRESTは使用することができる。(app onlyともいう)
 これが、わかるまでかなりかかった。
 このbearer_tokenはtwitter developerで自分用のアプリの申請を行って、取得することができる。
 この取得方法も、どこに何を書けばいいのだが、ようわからんのだが、ググれば説明があるので、ここでは触れない。
 最初はあまりドキュメントを読まないで、進めていたが、今は、翻訳ツールで日本語で読めるので、概念ぐらいはわからないと利用は難しい。
 内容が内容だけに、qiitaでググって簡単に作るというものではないので翻訳ツールでtwitter developerを一通り読むということをお勧めする。

v1とv2のresponceの違い

やはり、v2はv1と異なり、必要最小限のresponceになるように設計されており、v1のデータ構造をそのまま使えるような代物ではなかった。
 昔は、data.statuses:{text:"",id:"",user:{screen_name:"",name:""}}というような構造だったのだが
 v2では data:{text:"",id:"",author_id:""},includes:{users[{id:"",name:"",userneme:""}
というように、user部分を切り離して応答するということになってしまって、これでは2つのデータをauthor_id==idで連携しないとscreen_name(v2ではusernameに変更)は表示できないということになってしまって、あらあら!ということになっている。
 やはり、初めから作り直した方がいいということなのだが、めんどくさいので、今はv1とv2を混在した状態でさっき、ようやくsearchを表示させることに成功した。

twitter-v2のvulnerabilities

 clientを作成するのにtwitter-v2というnode-moduleをinstallしているんだが、
 どうも、現状ではvulnerabilitiesのhighが4つもある。ということでまだ公開していないのだが、どうも使っているtwitter-v2が理由なようので、そのうち、twitter-api-sdkに変えたいのだが、今使っているはtypescriptではないんだよなあ・・自分で書いてもたいしたことはないかなあ?悩む
 →上記の悩みはtwitter-api-sdkがjavascriptにも対応していたので、解決です。今ではang12-twitterにtwitter-api-sdkに対応したものが上がっています。これでいけば、pkce認証もうまくいきそうですなあ

今後

しばらくは、Oauth2.0 with PKCEを使わないでもなんとかなりそうだが、クリアできたらまた報告することにしたいと思います。ちょっと参考にはならなかったかな?
twitter api v1からv2へ(その2)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1