OAuth 2.0 認証

認証コードの取得

最初に、事前に登録を行ったアプリケーションの情報を用いて認証コードを取得します。 ユーザーがクライアントアプリケーションにアクセスを許可した場合、上記のredirect_uriにリダイレクトされるとともに、認証コードがcodeパラメータとして返されます。 ログインが必要となるため、curlなどのコマンドラインツールではなく、ブラウザでアクセスします。

GET https://biz.conyac.cc/oauth/authorize

Parameters

  • response_type
    認証コードを取得する場合は、’code’となる。
  • client_id
    アプリケーション登録の際に発行されるアプリケーションのID
  • redirect_uri
    アプリケーション登録の際に指定した、ユーザー認証後にリダイレクトされるURL

Response

ブラウザで以下のURLにアクセス

https://biz.conyac.cc/oauth/authorize?response_type=code&client_id=df256790540e639c9ef7a1debc31ae09405170c5b51b76d4a123b910cc032e56&redirect_uri=https%3A%2F%2Fyourconyacapp.com%2Foauth%2Fconyac%2Fcallback

ログイン後、以下のURLにリダイレクトされる。

https://yourconyacapp.com/oauth/conyac/callback?code=daaefad48a50797ff9b424e4ac948dda87bb8238d67090b4fa6909726f235ad3

アクセストークンの取得

上記で得られた認証コードを用いてアクセストークンを取得します。

POST https://biz.conyac.cc/oauth/token

Parameters

  • client_id
    アプリケーションID
  • client_secret
    Secret
  • redirect_uri
    OAuthコールバックURLをUTF–8でURLエンコードしたもの
  • grant_type
    authorization_code
  • code
    上記で得られたしたcode

Response

curl https://biz.conyac.cc/oauth/token \
  -d client_id=df256790540e639c9ef7a1debc31ae09405170c5b51b76d4a123b910cc032e56 \
  -d client_secret=f11d67fe92e97c371dec524e989ed3289828e604f5c4c4b545e7392dfb47d7a3 \
-d redirect_uri=https%3A%2F%2Fyourconyacapp.com%2Foauth%2Fconyac%2Fcallback \
-d grant_type=authorization_code \
-d code=b35ec927409e96ce3676ccc77e27240a205d4fe5e74d446c34e42e2f5f72c5ca
-X POST
{
  "access_token": "a5adb9bc60a9ed4438f7db1443971181b1dab875f0d6994d3245aa4cee7e34b8",
  "token_type": "bearer",
  "expires_in": null,
  "refresh_token": null,
  "scope": ""
}

OAuth 2.0認証の例

Conyac APIは標準的なOAuth 2.0 providerとして実装されているため、一般に公開されてるOAuth 2.0 comsumerライブラリを用いて認証とAPIアクセスが可能です。ここでは一例として、Rubyのoauth2 gemを用いた認証の例を挙げます。

Ruby (oauth2 gem)

irbで以下を実行

require 'oauth2'
callback = "https://yourconyacapp.com/oauth/conyac/callback"
app_id = "df256790540e639c9ef7a1debc31ae09405170c5b51b76d4a123b910cc032e56"
secret = "f11d67fe92e97c371dec524e989ed3289828e604f5c4c4b545e7392dfb47d7a3"
client = OAuth2::Client.new(app_id, secret, site: "https://biz.conyac.cc/")
client.auth_code.authorize_url(redirect_uri: callback)

以下のようなURLが出力されるので、ブラウザのURL入力欄にコピー&ペーストしてアクセスする。

https://biz.conyac.cc/oauth/authorize?response_type=code&client_id=df256790540e639c9ef7a1debc31ae09405170c5b51b76d4a123b910cc032e56&redirect_uri=https%3A%2F%2Fyourconyacapp.com%2Foauth%2Fconyac%2Fcallback

https://yourconyacapp.com に現在はWebアプリケーションは存在しないので、接続できませんでしたというエラーが出るが無視する。リダイレクトされたURL入力欄を見ると、以下のようなURLになっている。

https://yourconyacapp.com/auth/conyac/callback?code=205f705d46ccd7cdc0ea4f7f3db113289291ba8092f7e10586b9b1e2c1fe8e34

上記で得られたコード205f705d46ccd7cdc0ea4f7f3db113289291ba8092f7e10586b9b1e2c1fe8e34を用いて、引き続きirbに以下のrubyコードを入力して、アクセストークンを取得する。

access_token = client.auth_code.get_token('205f705d46ccd7cdc0ea4f7f3db113289291ba8092f7e10586b9b1e2c1fe8e34', redirect_uri: callback)

access_token.tokenで得られた文字列がアクセストークンである。

access_token.token
 => "2b0bf9de2146afa09996c2c6b180d69e9d6f1791c39dd169355a32adf3cf389f"

参考サイト