LoginSignup
8
4

More than 5 years have passed since last update.

QiitaのAPIをアクセストークン付きで使用すると、通常のitem検索でも限定共有記事が検出される

Posted at

されます!

いつものようにザル調べではこのあたりの情報が見つからず、うっかりトークンを使った機能を公開しようとしていたので危なかったです。

Qiita APIのGET /api/v1/users/:user_id/items を GET /api/v2/itemsに移行する - Qiita

access_tokenを利用した際に限定共有を取得しないで済むか

GET /api/v2/itemsで利用制限をゆるくしたいためaccess_tokenを使いたいが限定共有記事を取得したくないのでcURLで試した(GET /api/v1/users/#{qiita_id}/itemsでは限定共有記事を取得していた)

curl -X GET https://qiita.com/api/v2/items -d '{"per_page":"10", "query":"qiita user:yimajo"}' -H "Content-Type: application/json" -H ‘Authorization: Bearer ここがトークン‘
  • 想定してた自分の記事が取得できた

この記事からは/api/v2/itemsでは限定共有記事を取得しないと読み取れますが、実際はします

 curl -X GET https://qiita.com/api/v2/items -d '{"per_page":"10", "query":"title:fish user:khsk"}' -H "Content-Type: application/json" -H 'Authorization: Bearer ここがトークン' | jq '[.[].private]'

私はタイトルにfishを含む限定共有記事を一つ作成しています。
その他に公開記事としてもfishを含む記事を複数投稿しています。
このコマンドの出力結果は

[
  false,
  true,
  false,
  false,
  false,
  false,
  false
]

でした。

jq '[.[].title]'
では

[
  "fishでファイルを連番つきコピーで複製する。にはforループ",
  "fish shell設定スクリプト",
  "fishのfunctionをpecoで選択",
  "fishは一文字の改行なし出力をプロンプトで消してしまう",
  "fishでlistのindexを確認するtestにはcontainsが使える",
  "fishでnode.jsで言うところのnpmみたいなところのFisheryはもうない",
  "CentOS7でfishを入れると競合でDockerをインストールできない。解消はDocker1.10"
]

fish shell設定スクリプトなんて記事は公開していないので、この記事は限定共有記事です。

トークンはあくまで個人用アクセストークンと銘打たれていますし、他の類似サービスでの扱いはよくわからないのですが…
ちょっと齟齬がありそうな既存の記事があることと、
/api/v2/authenticated_user/items
という、限定共有記事を取得するならこちらだろうと誤解しそうなAPIがあるため、注意が必要です。

なお、private:falseQueryおよびprivate:falseパラメーターが働いていることは確認できませんでした。

今はユーザー入力から自分のID名があれば検索しない。
としていますが、不便で不安で限定公開にプライベート向けの投稿がなかなか出来ないので、トークンを使いながらprivateを指定できる検索方法を探し中です。


user指定が影響しないということも書き置いておきます。

curl -X GET https://qiita.com/api/v2/items -d '{"per_page":"10", "page":"3", "query":"title:fish"}' -H "Content-Type: application/json" -H 'Authorization: Bearer ここがトークン' | jq '[.[].private]'
[
  false,
  false,
  false,
  true,
  false,
  false,
  false,
  false,
  false,
  false
]

8
4
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
8
4