dotNetOpenId で GMail アカウントにログインしようとしています。動作しますが、クレームを取得できません。電子メール アドレスやユーザー名も取得できることはわかっていますが、クレームは返されず、ClailedIdentifierのみが利用可能です。Gmail アカウントからこのデータを取得する方法を知っている人はいますか? ClaimsRequest 構成の例を教えていただければ幸いです。
ありがとう
dotNetOpenId で GMail アカウントにログインしようとしています。動作しますが、クレームを取得できません。電子メール アドレスやユーザー名も取得できることはわかっていますが、クレームは返されず、ClailedIdentifierのみが利用可能です。Gmail アカウントからこのデータを取得する方法を知っている人はいますか? ClaimsRequest 構成の例を教えていただければ幸いです。
ありがとう
// Either you're creating this already or you can get to it in
// the LoggingIn event of the control you're using.
IAuthenticationRequest request;
// Add the AX request that says Email address is required.
var fetch = new FetchRequest();
fetch.Attributes.Add(
new AttributeRequest(WellKnownAttributes.Contact.Email, true));
request.AddExtension(fetch);
次に、Googleはユーザーを認証し、次の方法で取得できるメールアドレスを返します。
var fetch = openid.Response.GetExtension<FetchResponse>();
if (fetch != null)
{
IList<string> emailAddresses = fetch.GetAttribute(
WellKnownAttributes.Contact.Email).Values;
string email = emailAddresses.Count > 0 ? emailAddresses[0] : null;
}
もう少し詳しくは、この件に関する私のブログ投稿をご覧ください。ここで注意すべき重要なことは、Googleは、ユーザーのメールアドレスを必須としてマークした場合にのみユーザーのメールアドレスを通知することです(上記のスニペットで行ったように)。ただし、これは、ユーザーが自分の電子メールアドレスを共有したくない場合、ログインできないことも意味します。申し訳ありませんが、それはGoogleが設定した方法です。残念ながら、人々が使用する他のプロバイダーの動作は異なります。