GmailのアカウントにdotNetOpenIdでログインしようとしています。それは動作しますが、私はどの主張も取り出すことができません。電子メールアドレスやユーザー名も取得できますが、クレームは返されません。 ClaimedIdentifierが利用可能です。誰でもGmailアカウントからこのデータを取得する方法を知っていますか?私にClaimsRequest設定の例を提供していただければ幸いです。DotNetOpenIdでGMailデータを取得する
おかげ
GmailのアカウントにdotNetOpenIdでログインしようとしています。それは動作しますが、私はどの主張も取り出すことができません。電子メールアドレスやユーザー名も取得できますが、クレームは返されません。 ClaimedIdentifierが利用可能です。誰でもGmailアカウントからこのデータを取得する方法を知っていますか?私にClaimsRequest設定の例を提供していただければ幸いです。DotNetOpenIdでGMailデータを取得する
おかげ
// 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は、ユーザーを認証し、あなたが得ることができ、電子メールアドレス、返します:あなたが少しより多くの情報のため、被写体にmy blog postを見ることができる
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が設定した方法です。残念ながら、人々が使用する他のプロバイダには異なる動作があります。
返信いただきありがとうございます。私のコードではあなたのソリューションを使用しましたが、もう動作しません。私は電子メールよりも多くの属性を含んでいると思いますので、このソリューションを使用しますあなたが教えてくれます.. プロバイダによって交換を実装することにはうってつけです!.. – Hoghweed
Googleは、1人のユーザーにつき1つの属性値しか提供しないという点で一意です。したがって、自分のGoogleアカウントでテストして「このサイトで私を覚えておく」をクリックすると、次回にメールアドレスがわかりません。あなたのRPは値を保存しなければならず、ユーザーが次にログインするときにそれを思い出す必要があります。 –
私はこの情報を私に与えてくれたことを忘れてしまったのですか? –