LoginSignup
1

More than 1 year has passed since last update.

【Auth0】ソーシャルログインしたときの外部IDプロバイダーのアクセストークンを取得する

Posted at

はじめに

Auth0で外部のIDプロバイダーを利用してソーシャルログインをすると、利用したIDプロバイダーから取得できた情報でユーザーが作成されます。
この作成されたユーザーには、IDプロバイダーから取得できたアクセストークンもデータの一つとして保存されます。

今回はManagementAPIを使って、ソーシャルログインで作成されたユーザーのデータからIDプロバイダーのアクセストークンを取得してみました。

利用するユーザーデータ

本記事では例として以下のようにソーシャルログインで作成されたユーザーを利用します。

スクリーンショット 2020-10-31 14.36.12.png

PRIMARY IDENTITY PROVIDERをみてもらえればわかるように、Goolgeでログインをして作成したユーザーです。

Auth0の管理画面からuser情報のRaw JSON等をみても特にアクセストークンは表示されません。
ManagementAPIを使ってユーザー情報を取得したときだけアクセストークンを取得できるみたいです。

IDプロバイダーのアクセストークンを取得

以下のAPIを使ってユーザー情報を取得します。

Get a user
https://auth0.com/docs/api/management/v2#!/Users/get_users_by_id

GET https://{Auth0テナントのドメイン}/api/v2/users/{ユーザーID} HTTP/1.1

リクエストが成功するとユーザー情報が取得できます

{
  "created_at": "2020-10-31T05:34:57.252Z",
  "email": "XXXXXXXX@gmail.com",
  "email_verified": true,
  "family_name": "XX",
  "given_name": "XX",
  "identities": [
    {
      "provider": "google-oauth2",
      "access_token": "ya29.A6fHA0S.......................................",
      "expires_in": 3599,
      "user_id": "..........",
      "connection": "google-oauth2",
      "isSocial": true
    }
  ],
  "locale": "ja",
  "name": "XXXX",
  "nickname": "XXXXXXXX",
  "picture": "https://lh3.googleusercontent.com/a-/.................",
  "updated_at": "2020-10-31T05:34:57.252Z",
  "user_id": "google-oauth2|..........",
  "last_ip": "XXX.XXX.XX.XX",
  "last_login": "2020-10-31T05:34:57.250Z",
  "logins_count": 1
}

取得できたJSONにidentitiesという配列があり、ここにユーザーに紐づくIDプロバイダーの情報が載ってきます。
このIDプロバイダーの情報の中のaccess_tokenプロパティを参照すると、そのIDプラバイダーから取得できたアクセストークンを取得できます。

おわりに

ユーザー情報からアクセストークンを取得した後はソーシャルログイン時にユーザーから同意を得たスコープの範囲内で、このアクセストークンを使ってIDプラバイダー側が提供するログインユーザーのリソースにアクセスすることができます。
必要があれば試してみてください。

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
What you can do with signing up
1