LoginSignup
1
0

More than 5 years have passed since last update.

PocketAPIメモ - アプリの認可まで

Last updated at Posted at 2017-02-25

Pocket Authentication API Documentation

前提

自作アプリの登録手順は割愛。コンシューマキー取得状態からスタート。

リクエストトークンの取得

const ck = '1234-abcd1234abcd1234abcd1234'
const ru = 'pocketapp1234://authorizationFinished'
fetch('https://getpocket.com/v3/oauth/request', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json; charset=UTF-8',
    'X-Accept': 'application/json',
  },
  body: JSON.stringify({
    consumer_key: ck,
    redirect_uri: ru,
  })
}).then((response) => {
  response.json().then(function(d){
    console.log('[Request Token]', d.code)
    console.log('[Auth URL]', `https://getpocket.com/auth/authorize?request_token=${d.code}&redirect_uri=${ru}`)
  })
})
//=> [Request Token] dcba4321-dcba-4321-dcba-4321dc
//=> [Auth URL] https://getpocket.com/auth/authorize?request_token=dcba4321-dcba-4321-dcba-4321dc&redirect_uri=pocketapp1234://authorizationFinished
  • レスポンスには code と表記されるが、これがリクエストトークンのことである
  • 最新1トークンのみが有効っぽい

第三者アプリケーションの認可ページ

https://getpocket.com/auth/authorize?request_token=dcba4321-dcba-4321-dcba-4321dc&redirect_uri=pocketapp1234:authorizationFinished
  • Pocket側に登録されているアプリをユーザが 認可 するためのページ
  • ブラウザで開けばOK
  • ユーザが認可ボタンを押したあとにリダイレクトする先を指定する
  • この例のようにリダイレクト先をカスタムURLスキームにしてもセーフ
    • ブラウザで認可するとリダイレクトできないが、Pocketサーバには伝わっている(後述)
  • すでに認可済みの場合は即リダイレクトされる
    • ブラウザでアクセスすると空っぽの画面となるが、Pocketサーバには伝わっている

:point_up:認可プロセスの挙動について補足

ユーザが認可ボタンを押しただけでは、アプリの認可リストには登録されない。この時点では、Pocketサーバ側でアプリの認可“待ち”の状態になる。
アプリ側はリダイレクトで戻ってきたあと下記の authorize メソッドにさっき渡したリクエストトークンを再度渡して認可を確定する。逆に、ユーザが「認可」ボタンではなく「結構です」ボタンを押すと、Pocketサーバ側でアプリが認可“待ち”とならず、authorize メソッドを実行してもエラーとなる。

アプリの認可

fetch('https://getpocket.com/v3/oauth/authorize', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json; charset=UTF-8',
    'X-Accept': 'application/json',
  },
  body: JSON.stringify({
    consumer_key: '1234-abcd1234abcd1234abcd1234',
    code: 'dcba4321-dcba-4321-dcba-4321dc',
  })
}).then((response) => {
  response.json().then(function(d){
    console.log(d)
  })
})
//=> {"access_token":"5678defg-5678-defg-5678-defg56", "username":"pocketuser"}
  • アクセストークンは認可操作をし直すと以前のものが無効となる
1
0
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
0