Auth0のManagement APIでユーザ検索を試してみる
Auth0のManagement APIには、ユーザの一覧を取得するAPIがあります。
このAPIでは、クエリを使うことでユーザ検索ができるので、いくつか試してみました。
おすすめの方
- Auth0のManagement APIを使いたい方
- Auth0のManagement APIでユーザ検索をしたい方
ユーザ検索を試す
q
パラメータを用いて、検索します。下記のドキュメントにクエリ例も記載されています。
注意
GET /api/v2/users
のAPIは、取得できるユーザ総数が1000に制限されています。
また、page
(ページング)のリクエストがない場合は、1度の取得で50件のデータが返されます。
基本のコード
基本となるコードです。これ以降は、get_users()
のみを記載します。
また、fields
は、user_id,email
を指定しています。
import json import requests DOMAIN = 'your_domain.auth0.com' CLIENT_ID = 'your client id' CLIENT_SECRET = 'your client secret' AUDIENCE = 'https://your_domain.auth0.com/api/v2/' def main(): token = get_token() get_users(token) def get_token(): headers = {'Content-Type': 'application/json'} url = f'https://{DOMAIN}/oauth/token' payloads = { 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'audience': AUDIENCE, 'grant_type': 'client_credentials', } res = requests.post(url, headers=headers, data=json.dumps(payloads)) return res.json().get('access_token') def get_users(token): headers = {'Authorization': f'Bearer {token}'} url = f'https://{DOMAIN}/api/v2/users?fields=user_id,email' response = requests.get(url, headers=headers) print(json.dumps(response.json(), indent=2)) if __name__ == '__main__': main()
メールアドレスが特定の文字で始まるユーザ
q=email:fujii*
を使います。
def get_users(token): headers = {'Authorization': f'Bearer {token}'} url = f'https://{DOMAIN}/api/v2/users?fields=user_id,email&q=email:fujii*' response = requests.get(url, headers=headers) print(json.dumps(response.json(), indent=2))
ログイン回数が0件のユーザ
q=NOT _exists_:logins_count OR logins_count:0
を使います。
def get_users(token): headers = {'Authorization': f'Bearer {token}'} url = f'https://{DOMAIN}/api/v2/users?fields=user_id,email&q=NOT _exists_:logins_count OR logins_count:0' response = requests.get(url, headers=headers) print(json.dumps(response.json(), indent=2))
メールアドレスが特定の文字で始まるユーザ、かつ、ログイン回数が0件のユーザ
q=email:fujii* AND logins_count:0
を使います。
def get_users(token): headers = {'Authorization': f'Bearer {token}'} url = f'https://{DOMAIN}/api/v2/users?fields=user_id,email&q=email:fujii* AND logins_count:0' response = requests.get(url, headers=headers) print(json.dumps(response.json(), indent=2))
メールアドレスが未確認のユーザ
q=email_verified:false OR NOT _exists_:email_verified
を使います。
def get_users(token): headers = {'Authorization': f'Bearer {token}'} url = f'https://{DOMAIN}/api/v2/users?fields=user_id,email&q=email_verified:false OR NOT _exists_:email_verified' response = requests.get(url, headers=headers) print(json.dumps(response.json(), indent=2))
メールアドレスのドメインが「example.com」に完全一致するユーザ
q=email.domain:"example.com"
を使います。
def get_users(token): headers = {'Authorization': f'Bearer {token}'} url = f'https://{DOMAIN}/api/v2/users?fields=user_id,email&q=email.domain:"example.com"' response = requests.get(url, headers=headers) print(json.dumps(response.json(), indent=2))
特定の期間に新規登録したユーザ
q=created_at:[2022-03-01 TO 2022-03-31]
を使います。
def get_users(token): headers = {'Authorization': f'Bearer {token}'} url = f'https://{DOMAIN}/api/v2/users?fields=user_id,email&q=created_at:[2022-03-01 TO 2022-03-31]' response = requests.get(url, headers=headers) print(json.dumps(response.json(), indent=2))
ブロックされているユーザ
q=blocked:true
を使います。
def get_users(token): headers = {'Authorization': f'Bearer {token}'} url = f'https://{DOMAIN}/api/v2/users?fields=user_id,email&q=blocked:true' response = requests.get(url, headers=headers) print(json.dumps(response.json(), indent=2))
さいごに
クエリ例やユーザ検索のベストプラクティスもあるので、こちらも確認すると良いですね。