あとあと読みたいネットの記事のURLをPocketにどんどん放り込んでたんだけど、未読がたまっていく一方だったりして少し整理したりいい感じに管理できるプログラム作れないかな。。と思ってとりあえずPocketのAPI叩いてクリップした記事を取得してみた。
apps.apple.comPocketの認証手順
他のFacebookとかTwitterのOAuth認証と同じような流れ。割と面倒。
- Pocketにログインする。
- Developer向けのページにアクセスしてApplicationを登録する。 https://getpocket.com/developer/
- アプリケーションを登録するとコンシューマキーが発行されるので抑えておく
- コンシューマキーをbodyに含めてPocketのAPIにhttpリクエストを送ってリクエストトークンを取得する
- リクエストトークンを含んだURLをwebで開いて認証する。この時にリダイレクト先のWebページを用意しておく
- 認証されたリクエストトークンを使って再びPocketのAPIにhttpリクエストを送ってアクセストークンを取得
- アクセストークンが取得できたらそのトークンを元にhttpリクエスト送って目的の記事検索やその他諸々ができるようになる。
curlでの取得例
リクエストトークン取得
curl -X POST -H "Content-Type: application/json" -H "X-Accept: application/json"
-d '{"consumer_key":"{発行したコンシューマキー}", "redirect_uri":"http://localhost:8080"}'
https://getpocket.com/v3/oauth/request
リクエストトークン認証
この時にリダイレクト先のURLが必要なんだけど今回はCLI上で試してみたいだけなんで適当にlocalhostでphpのサーバ実行してそこを指定する
# リダイレクト先のサーバ
php -S localhost:8080
# openコマンドでchromeからwebページを開く
open -a '/Applications/Google Chrome.app' https://getpocket.com/auth/authorize?request_token={リクエストトークン}&redirect_uri=http://localhost:8080
うまくいくとこんな感じのサイトが出るので認証

アクセストークン取得
curl -X POST -H "Content-Type: application/json" -H "X-Accept: application/json"
-d '{"consumer_key":"{コンシューマキー}", "code":"{リクエストトークン}"}'
https://getpocket.com/v3/oauth/authorize
試しに記事1件取得してみる
curl -X POST -H "Content-Type: application/json" -H "X-Accept: application/json"
-d '{"consumer_key":"{コンシューマキー}", "code":"{リクエストトークン}"}'
https://getpocket.com/v3/oauth/authorize
結果
{
"status": 1,
"complete": 1,
"list": {
"3325624398": {
"item_id": "3325624398",
"resolved_id": "3325624398",
"given_url": "https://togetter.com/li/1710737",
"given_title": "【朗報】mRNAワクチンは、変異株にも相当効果が高い~「圧倒的すぎて専門家も引き気味」「ガラケー時代のiPhone」 - Togetter",
"favorite": "0",
"status": "0",
"time_added": "1620527156",
"time_updated": "1620527156",
"time_read": "0",
"time_favorited": "0",
"sort_id": 0,
"resolved_title": "【朗報】mRNAワクチンは、変異株にも相当効果が高い~「圧倒的すぎて専門家も引き気味」「ガラケー時代のiPhone」",
"resolved_url": "https://togetter.com/li/1710737",
"excerpt": "よく、この時代に間に合ったものだな…/※なお「こういう人もいる」的な感じで、リプ欄でみた、ちょっと賛同し難い意見も収録しています",
"is_article": "0",
"is_index": "0",
"has_video": "0",
"has_image": "0",
"word_count": "0",
"lang": "ja",
"top_image_url": "https://s.togetter.com/ogp/9eb2843312e0379332e5717d0bb6165e-1200x630.png",
"domain_metadata": {
"name": "トゥギャッター公式",
"logo": "https://logo.clearbit.com/togetter.com?size=800",
"greyscale_logo": "https://logo.clearbit.com/togetter.com?size=800&greyscale=true"
},
"listen_duration_estimate": 0
}
},
"error": null,
"search_meta": {
"search_type": "normal"
},
"since": 1620527161
}
とりあえず取得できたけどどう使おうかな。。
