質問
メッセージングでJWT認証を使用してユーザーを認証すると、409
競合エラーが表示されるのはなぜですか。
回答
JWT認証では、常にexternal_id
が要求されます。また、確認済みのメールIDを含めることもできます。確認済みのメールIDが含まれている場合、Sunshine ConversationsはそのメールをID(user.identities)
として保存し、これらのIDは一意である必要があります。たとえば、JWTログインによって、external_id
1234でメールIDuser@example.org
を持つユーザーが作成されます。
メールの競合エラーは、表示されているJWTのexternal_id
とメールのペアがすでに記録されているものと一致しないことを示します。たとえば、後続のJWTにexternal_id
5678と確認済みメール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では、翻訳の正確さを期すために相応の努力を払っておりますが、翻訳の正確性につ いては保証いたしません。
翻訳された記事の内容の正確性に関して疑問が生じた場合は、正式版である英語の記事 を参照してください。