LoginSignup
2
1

More than 3 years have 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プラバイダー側が提供するログインユーザーのリソースにアクセスすることができます。
必要があれば試してみてください。

2
1
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
2
1