2009-04-07 28 views
5

के माध्यम से जीमेल डेटा पुनर्प्राप्त करें मैं जीमेल खातों में dotNetOpenId के साथ लॉगिन करने का प्रयास कर रहा हूं। यह काम करता है लेकिन मैं किसी भी दावों को पुनः प्राप्त करने में सक्षम नहीं हूं। मुझे पता है कि मैं ईमेल पते या उपयोगकर्ता नाम भी पुनर्प्राप्त कर सकता हूं, लेकिन कोई दावा वापस नहीं किया जा रहा है केवल दावा किए गए इंडेंटिफायर उपलब्ध है। किसी को भी पता है कि जीमेल खातों से इस डेटा को कैसे प्राप्त किया जाए? यदि आप कृपया मुझे दावे की जांच कॉन्फ़िगरेशन का एक उदाहरण प्रदान कर सकते हैं तो मैं आभारी रहूंगा।डॉटनेट ओपेनआईडी

धन्यवाद

उत्तर

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

गूगल तो उपयोगकर्ता प्रमाणित करता है और ईमेल पता है, जो आप के साथ प्राप्त कर सकते हैं देता है:

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

आप में थोड़ा और अधिक जानकारी के लिए इस विषय पर my blog post देख सकते हैं। यहां ध्यान देने योग्य महत्वपूर्ण बात यह है कि यदि आप इसे आवश्यकतानुसार चिह्नित करते हैं तो Google केवल आपको उपयोगकर्ता का ईमेल पता बताएगा (जैसा कि मैंने उपरोक्त स्निपेट में किया है)। लेकिन इसका यह भी अर्थ है कि यदि उपयोगकर्ता अपना ईमेल पता साझा नहीं करना चाहता है, तो वह बिल्कुल लॉग इन नहीं कर सकता है। क्षमा करें, इस तरह Google ने इसे सेट अप किया है। दुर्भाग्य से, अन्य प्रदाता जो लोग उपयोग करते हैं, उनके अलग-अलग व्यवहार होते हैं।

+0

उत्तर के लिए धन्यवाद, मैंने आपके कोड में अपना समाधान उपयोग किया है, लेकिन अब यह काम नहीं करता है, मुझे लगता है क्योंकि मैंने केवल ईमेल की तुलना में अधिक विशेषताओं को शामिल किया है ... इसलिए मैं इस समाधान का उपयोग करने जाउंगा और मैं आपको बता दूंगा .. जैसा कि आपने कहा था कि यह प्रदाता द्वारा एक्सचेंज को लागू करने के लिए तैयार है! .. – Hoghweed

+1

Google अद्वितीय है कि यह आपको केवल प्रति उपयोगकर्ता के लिए विशेषता मान देगा। तो यदि आप इसे अपने Google खाते से जांचते हैं और "इस साइट को मुझे याद रखने की अनुमति दें" पर क्लिक करते हैं, तो यह अगली बार ईमेल पता नहीं देगा। आपके आरपी को मूल्य को स्टोर करना होगा और अगली बार जब उपयोगकर्ता लॉग इन करेगा उसे याद रखें। –

+0

क्या मैं किसी भी तरह से Google को यह भूलने के लिए मजबूर कर सकता हूं कि उसने मुझे यह जानकारी दी है? –

संबंधित मुद्दे