Skip to main content
本番環境でスケジュールされた高頻度の呼び出しを行うには、バックエンドでトークンを自動的に取得するプロセスを構築する必要があります (これにより、実質的に有効期限のないトークンを再現できます) 。

前提条件

アクセストークンを取得する

Auth0 に v2 のアクセストークンを要求するには、前提条件の手順で作成したマシン間アプリケーションの認証情報を使用して、https://{yourDomain}/oauth/token エンドポイントに POST リクエストを送信します。 ペイロードは次の形式にする必要があります。 `{yourClientSecret}` は、アプリケーションの Settings タブにある の値に置き換えてください。 リクエストパラメーターは次のとおりです。
Request ParameterDescription
grant_type実行する OAuth 2.0 フロー を指定します。マシン間通信には client_credentials を使用します。
client_id作成したマシン間アプリケーションの クライアントID フィールドの値です。アプリケーションの Settings タブで確認できます。
client_secret作成したマシン間アプリケーションの クライアントシークレット フィールドの値です。アプリケーションの Settings タブで確認できます。
audienceAuth0 Management API識別子 フィールドの値です。API の Settings タブで確認できます。
update:client_grants および create:client_grants スコープは、クライアントが自身に追加の権限を付与できるため、高権限のアプリケーションでのみ使用してください。
レスポンスには、署名済みのJWT、有効期限、付与されたスコープ、およびトークンタイプが含まれます。
{
  "access_token": "eyJ...Ggg",
  "expires_in": 86400,
  "scope": "read:clients create:clients read:client_keys",
  "token_type": "Bearer"
}
以上から、 は 24 時間 (86400 秒) で期限切れになり、アプリケーションの読み取りと作成を行う権限が付与されており、Bearer アクセストークン であることがわかります。

Auth0 の Node.js クライアントライブラリを使用する

HTTP 呼び出しの代わりに、node-auth0 ライブラリを使用して、Management API のトークンを自動的に取得できます。

アクセストークンを使用する

このトークンを使用するには、リクエストの Authorization ヘッダーに含めてください。 たとえば、すべてのアプリケーションを取得するには、次のようにします。
各エンドポイントのcurlコマンドは、Management API v2 Explorer から取得できます。呼び出すエンドポイントに移動し、Test this endpoint セクションの get curl command リンクをクリックしてください。

例: Python 実装

このPythonスクリプトは Management API v2 のアクセストークンを取得し、それを使用して すべてのアプリケーションを取得 エンドポイントを呼び出し、レスポンスをコンソールに出力します。 実行する前に、次の変数に有効な値が設定されていることを確認してください。
  • AUDIENCE: Auth0 Management API識別子。これは API の Settings タブ で確認できます。
  • DOMAIN: 作成したマシン間アプリケーションの ドメイン
  • CLIENT_ID: 作成したマシン間アプリケーションの
  • CLIENT_SECRET: 作成したマシン間アプリケーションの クライアントシークレット
def main():
  import json, requests
  from requests.exceptions import RequestException, HTTPError, URLRequired

  # 設定値
  domain = 'YOUR_DOMAIN'
  audience = f'https://{domain}/api/v2/'
  client_id = '{yourClientId}'
  client_secret = '{yourClientSecret}'
  grant_type = "client_credentials" # 使用する OAuth 2.0 フロー

  # Auth0 からアクセストークンを取得する
  base_url = f"https://{domain}"
  payload =  { 
    'grant_type': grant_type,
    'client_id': client_id,
    'client_secret': client_secret,
    'audience': audience
  }
  response = requests.post(f'{base_url}/oauth/token', data=payload)
  oauth = response.json()
  access_token = oauth.get('access_token')

  # リクエストの Authorization ヘッダーにトークンを追加する
  headers = {
    'Authorization': f'Bearer {access_token}',
    'Content-Type': 'application/json'
  }

  # トークンを使用してすべてのアプリケーションを取得する
  try:
    res = requests.get(f'{base_url}/api/v2/clients', headers=headers)
    print(res.json())
  except HTTPError as e:
    print(f'HTTPError: {str(e.code)} {str(e.reason)}')
  except URLRequired as e:
    print(f'URLRequired: {str(e.reason)}')
  except RequestException as e:
    print(f'RequestException: {e}')
  except Exception as e:
    print(f'Generic Exception: {e}')

# main() 関数を呼び出すための標準的なボイラープレート。
if __name__ == '__main__':
  main()

詳細