2009-04-07 6 views
5

GmailのアカウントにdotNetOpenIdでログインしようとしています。それは動作しますが、私はどの主張も取り出すことができません。電子メールアドレスやユーザー名も取得できますが、クレームは返されません。 ClaimedIdentifierが利用可能です。誰でもGmailアカウントからこのデータを取得する方法を知っていますか?私にClaimsRequest設定の例を提供していただければ幸いです。DotNetOpenIdでGMailデータを取得する

おかげ

答えて

2
// 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が設定した方法です。残念ながら、人々が使用する他のプロバイダには異なる動作があります。

+0

返信いただきありがとうございます。私のコードではあなたのソリューションを使用しましたが、もう動作しません。私は電子メールよりも多くの属性を含んでいると思いますので、このソリューションを使用しますあなたが教えてくれます.. プロバイダによって交換を実装することにはうってつけです!.. – Hoghweed

+1

Googleは、1人のユーザーにつき1つの属性値しか提供しないという点で一意です。したがって、自分のGoogleアカウントでテストして「このサイトで私を覚えておく」をクリックすると、次回にメールアドレスがわかりません。あなたのRPは値を保存しなければならず、ユーザーが次にログインするときにそれを思い出す必要があります。 –

+0

私はこの情報を私に与えてくれたことを忘れてしまったのですか? –

関連する問題