はじめに
いやー、大変だった。
今まで、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)