メインコンテンツへスキップ
Auth0は、ユーザープロファイル内の共通プロファイルプロパティを正規化します。これには、namepictureフィールドなどが含まれます。画像フィールドには、ソーシャルプロバイダーのプロフィール画像、またはユーザーのメールアドレスに関連付けられたGravatar画像のいずれかが入力されます。 デフォルトでは、すべてのデータベースユーザーにイニシャルの入ったプレースホルダー画像が設定されます。ユーザーの認証では、この画像フィールドはuser.pictureと呼ばれます。

Management APIを使用する

user.picture属性がGoogle、Facebook、Xなど、Auth0以外のIDプロバイダーによって提供されている場合には直接編集できません。この属性を編集するには、ユーザープロファイルの作成時にのみIDプロバイダーからユーザー属性が更新されるように、Auth0との接続同期を構成する必要があります。詳細については、「ユーザープロファイルの更新にIDプロバイダー接続を構成する」をお読みください。そうすれば、ルート属性を個別に編集したり、を使用して一括インポートしたりできます。詳細については、「ユーザーを一括してインポートする」をお読みください。 または、メタデータを使用してユーザーの画像属性を保管することもできます。たとえば、アプリにプロフィール画像をアップロードする方法がある場合は、画像をアップロードすれば、user.user_metadata.pictureでURLを画像に設定できます。
curl --request PATCH \
  --url 'https://{yourDomain}/api/v2/users/USER_ID' \
  --header 'authorization: Bearer MGMT_API_ACCESS_TOKEN' \
  --header 'content-type: application/json' \
  --data '{"user_metadata": {"picture": "https://example.com/some-image.png"}}'

アクションを使用する

user_metadataからの画像がIDトークンで返されるようにするには、event.user.user_metadata.picture属性の存在を確認する新しいアクションを作成し、存在する場合はuser.picture属性をその値に置き換える必要があります。そうすると、user_metadataからの画像がIDトークンのpictureクレームで返されます。
  1. [Auth0 Dashboard]>[Actions(アクション)]>[Library(ライブラリー)]に移動して、[Build Custom(カスタムの構築)] を選択します。
  2. アクションにわかりやすい名前Change user picturesなど)を入力し、[Login / Post Login(ログイン/ログイン後)]のトリガー(アクションをログインフローに追加することになるため)を選択してから**[Create(作成)]** を選択します。
  3. Actionsコードエディターを見つけて、次のJavaScriptコードをコピーし、[Save Draft(下書きを保存)] を選択して変更を保存します。
    exports.onExecutePostLogin = async (event, api) => {
      const { picture } = event.user.user_metadata;
      if (picture) {
        // Return the persisted user_metadata.picture in the ID token
        api.idToken.setCustomClaim("picture", picture)
      }
    };
    
  4. Actionsコードエディターのサイドバーから、[Test(テスト)](再生アイコン)を選択してから、[Run(実行)] を選択し、コードをテストします。
  5. アクションを稼働する準備ができたら、[Deploy(デプロイ)] を選択します。
最後に、作成したアクションをログインフローに追加します。フローにアクションをアタッチする方法については、「アクションを初めて作成する」の「アクションをフローにアタッチする」セクションをお読みください。

すべてのユーザーのデフォルト画像を変更する

プロフィール画像を設定していないすべてのユーザーのデフォルト画像を変更するには、アクションを使用できます。例:
exports.onExecutePostLogin = async (event, api) => {
  const DEFAULT_PROFILE_IMAGE = '{yourDefaultImageUrl}';
  api.idToken.setCustomClaim("picture", {defaultProfileImage});
};
このアクションでは、カスタム画像がIDトークンで返され、Googleなどの外部IDプロバイダーのログインから適用されるかもしれないpictureプロパティを上書きします。

制限事項

Auth0データストアには制限があるため、アプリケーションのデータが制限を超えないようにするには、ユーザー画像の保管に外部データベースの使用をお勧めします。そうすることで、Auth0データストアを小さく保ち、より効率的な外部データベースを使用して追加データを保持できるようになります。詳細については、「ユーザーデータストレージ」をお読みください。

もっと詳しく

I