YConnect

Authorization Codeフロー

Authorization Code

Authorization Codeは認可が完了すると認可コードを発行し、事前に登録してあった戻り先URLへ認可コードを渡します。この認可コードを認可サーバーへ渡すことでアクセストークンを取得します。

Authorization Codeは第三者に露出することなくアクセストークンを渡す事が可能となっています。

また、Authorization Codeの仕様では、Yahoo! JAPAN、クライアント、ユーザーの三者間でデータのやり取りが行われます。



実装サンプル

順次SDKとサンプルコードは準備していきます。



エンドポイント仕様書

エンドポイントの詳細な仕様は以下をご覧ください。



フロー



1. ユーザー認可リクエスト

  1. クライアントはユーザーの認可を得るため、ユーザーをAuthorizationエンドポイントへリダイレクトさせます。
  2. Authorizationエンドポイントはユーザーを認証して、クライアントがアクセスする権限を与えることについてユーザーに確認をとります。
  3. ユーザーによる認可が得られた場合、事前に登録された戻り先URLへユーザーをリダイレクトさせ、認可コードと指定されたstateをクライアントに渡します。
  4. クライアントは認可リクエスト時に送信したstateと渡されたstateが同一かどうか確認します。


2. アクセストークン要求

アクセストークン新規取得フロー

  1. クライアントは認可コードを使って、Tokenエンドポイントへリクエストを送信します。この際、事前に発行してあるシークレットでBasic認証を行います。
  2. Tokenエンドポイントはクライアントを認証し、アクセストークン(access_token)とリフレッシュトークン(refresh_token)を返却します。要求があった場合はid_tokenも一緒に返却します。id_tokenに関しましてはこちらをご覧ください。
  3. クライアントは取得したアクセストークンとリフレッシュトークンを後で利用するため安全に保存します。ID連携を行う場合はアクセストークンと一緒に取得したid_tokenからユーザー識別子を取得するか、UserInfoAPIからユーザー識別子を取得し、ユーザー識別子をキーにリフレッシュトークンを保存してください。クライアント独自のIDがある場合は必要に応じてユーザー識別子と独自のIDの関連付け処理を行ってください。

アクセストークン更新フロー

  1. アクセストークンの有効期限が切れた場合、クライアントは保存しておいたリフレッシュトークンを用いてTokenエンドポイントへリクエストを送信します。この際、事前に発行してあるシークレットでBasic認証を行います。
  2. Tokenエンドポイントはクライアントを認証し、新しいアクセストークン(access_token)を返却します。クライアントから渡されたリフレッシュトークンの有効期限が切れていた場合はエラーを返却します。
  3. クライアントは新しいアクセストークンを取得し、期限切れのアクセストークンと置き換えます。リフレッシュトークンの期限切れでエラーが返却された場合は、1のフローからやり直して、ユーザーの認可を取り直す必要があります。


3. ウェブAPIアクセス

  1. クライアントはアクセストークンを使ってウェブAPIのエントリーポイントへリクエストを送信します。
  2. ウェブAPIはアクセストークンが有効な場合、正常なレスポンスを返却します。アクセストークンが無効な場合はエラーレスポンスを返却します。
  3. クライアントは取得したレスポンスをもとに処理を継続します。


上記1~3のフローにおけるクライアントの実装についてはサンプルコードを参照してください。