質問

メッセージング製品でJWT認証を使用してユーザーを認証すると、409競合エラーが表示されるのはなぜですか。

回答

JWT認証では、毎回external_idが必要です。確認済みのメールIDを含めることもできます。確認済みのメールIDを含める場合、Sunshine ConversationsはそのメールをID(user.identities)として保存し、各IDは一意である必要があります。たとえば、JWTログインによって、external_id1234でメールIDuser@example.orgを持つユーザーが作成されます。

メールの競合エラーは、JWT のexternal_idとメールが、システムにすでに記録されているものと一致しない場合に発生します。 たとえば、後続のJWTにexternal_id5678と確認済みメールIDuser@example.orgが含まれている場合、ログインしようとするとメールの競合エラーが発生します。これは、指定されたメールアドレスがすでに別のexternal_idとペアになっているためです。この不一致は、ユーザーがメールアドレスを変更したために発生することがあります。JWTにメールクレームが含まれていない場合、競合は発生しません。

競合の原因となっているユーザーは、List Users APIで特定できます。

  • API method: GET

    https://<subdomain>.zendesk.com/sc/v2/apps/{appId}/users?filter[identities.email]=user@example.org

競合を解決するには、次の2つの方法があります。 

Delete User APIと競合するユーザーを削除します。

  • 基本認証:APIキーとシークレットキーを使用する
    • ユーザー名:API_KEY_ID
    • パスワード:API_KEY_SECRET
       
  • API method: DELETE

    https://<subdomain>.zendesk.com/sc/v2/apps/{appId}/users/{userIdOrExternalId}

または、Delete User Personal Information APIを使用して、競合するメールIDを削除することもできます。

  • API method: DELETE

    https://<subdomain>.zendesk.com/sc/v2/apps/{appId}/users/{userIdOrExternalId}/personalinformation

上記のURLで、{appId}をAPIキーとシークレットキーの生成時に受け取ったIDに、{userIdOrExternalId}をエラーを返すユーザーにリンクされた以前のexternal_idに置き換えます。

Sunshine Conversations API の詳細については、「Sunshine Conversations API へようこそ」を参照してください。

免責事項:userIdOrExternalIdを削除すると、エンドユーザーが新しいexternal_idで認証された後、およびSunshine Conversationsからユーザーを削除した後に、そのユーザーの会話履歴が消去されます。この記事は説明のみを目的としています。記事内で例示したコードについて、Zendeskはサポートも保証もいたしません。何か問題があった場合はコメントセクションに投稿するか、インターネットで解決策を探してみてください。

詳細については、「Authenticating end users for messaging」を参照してください。

翻訳に関する免責事項:この記事は、お客様の利便性のために自動翻訳ソフ トウェアによって翻訳されたものです。Zendeskでは、翻訳の正確さを期すために相応の努力を払っておりますが、翻訳の正確性につ いては保証いたしません。

翻訳された記事の内容の正確性に関して疑問が生じた場合は、正式版である英語の記事 を参照してください。

Powered by Zendesk