質問

メッセージングで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にメールクレームがない場合、競合は発生しません。

この動作を解決し、更新されたexternal_idを持つユーザーがJWT認証経由でログインできるようにするには、最初のexternal_idにリンクした以前のuser.idを削除する必要があります。

APIコールを実行する:

  • 基本認証:APIキーとシークレットキーを使用する
    • ユーザー名:API_KEY_ID
    • パスワード:API_KEY_SECRET
  • API method: DELETE
    • https://<subdomain>.zendesk.com/sc/v2/apps/{appId}/users/{userIdOrExternalId}

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

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

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

もう1つの方法は、Sunshine Conversationsからユーザーの個人情報を削除することです。Sunshine Conversationsプロフィールのこのエンドポイントとの会話は削除されません。ユーザーの個人情報を削除します。

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

詳しくは、次の記事を参照してください:メッセージングのエンドユーザーの認証。

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

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

Powered by Zendesk