2009-04-07 22 views
5

DotNetOpenId ile GMail hesaplarına giriş yapmaya çalışıyorum. Çalışıyor, ancak herhangi bir hak talep edemiyorum. E-posta adreslerini veya kullanıcı adlarını da alabildiğimi biliyorum, ancak hiçbir hak talebinde bulunulmadıysa yalnızca ClaimedIdentifier kullanılabilir. Bu verileri Gmail hesaplarından nasıl alacağını bilen var mı? Eğer bana ClaimsRequest yapılandırmasının bir örneğini verebilirseniz minnettar olurdum.DotNetOpenId aracılığıyla GMail verilerini al

Teşekkür

cevap

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 daha sonra kullanıcının kimliğini doğrular ve ile alabilirsiniz e-posta adresi, döndürür:

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; 
} 

Sen biraz daha fazla bilgi için konuyla ilgili my blog post görebilirsiniz. Burada dikkat edilmesi gereken önemli nokta, Google'ın, gerektiği gibi işaretlediğinizde (yukarıdaki snippet'te yaptığım gibi) yalnızca kullanıcının e-posta adresini size bildireceğidir. Ancak bu, kullanıcı e-posta adresini paylaşmak istemiyorsa, hiç giriş yapamayacağı anlamına da gelir. Maalesef, Google bu şekilde ayarlandı. İnsanların kullandıkları diğer Sağlayıcıların maalesef farklı davranışları var.

+0

teşekkürler cevap için, benim kodunda çözümünüzü kullandım ama ben sadece e-posta birden fazla öznitelik yer verdik çünkü bu yüzden bu çözüm kullanmaya devam edecek ... düşünüyorum, artık çalışmıyor var ve ben size söyleyeyim .. Dediğiniz gibi sağlayıcı tarafından bir değişim uygulamak için neeeded! .. – Hoghweed

+1

Google sadece kullanıcı başına ONCE değeri öznitelik verecek olmasıdır. Dolayısıyla, kendi Google hesabınızla test edip "Bu sitenin beni hatırlamasına izin ver" i tıklarsanız, bir dahaki sefere e-posta adresini vermez. RP değerinizi saklamak ve kullanıcının bir dahaki sefere girişini hatırlatması GEREKMEKTEDİR. –

+0

Bir şekilde bana bu bilgiyi verdiğini unutmak için google'a zorlayabilir miyim? –

İlgili konular