2011-08-07 13 views
5

एक पायथन वेब एप्लिकेशन में, मैं ओएथ और आईएमएपी का उपयोग कर जीमेल से कनेक्ट करने में सक्षम हूं। OAuth आप जिस भी Google खाते पर वर्तमान में साइन इन कर रहे हैं उसका उपयोग करता है और आपको वेब ऐप तक पहुंच प्रदान करने के लिए कहता है। हालांकि, यह वास्तव में उस खाते के ईमेल पते को पुनर्प्राप्त करने के लिए एक एपीआई प्रदान नहीं करता है।क्या ओथ का उपयोग कर जीमेल के साथ प्रमाणीकरण के बाद आपका ईमेल पता प्राप्त करने का कोई तरीका है?

https://mail.google.com/mail/b/[your-email]/imap/ 
इस वजह से

, वेब:

समस्या है, भले ही उपयोगकर्ता अनुदान OAuth से पहुंचें, जीमेल के साथ इंटरफेस करने आप अभी भी स्पष्ट रूप से अपने IMAP कनेक्शन URL में ईमेल पता प्रदान करने की आवश्यकता है, आवेदन को उपयोगकर्ता को उनके ईमेल पते और के लिए पूछना है कि वे ओएथ के साथ जीमेल से पहुंच प्रदान करें। इससे भी बदतर बात यह है कि वे जो ईमेल पता दर्ज करते हैं, वे उस खाते के ईमेल से मेल नहीं खाते हैं, जिसके द्वारा वे पहुंच प्रदान करते हैं, जिससे ऐप विफल हो जाता है।

क्या ओएथ का उपयोग करके अपना ईमेल पता प्राप्त करने का कोई तरीका है ताकि आप इसे यूआरएल में बिना पूछे यूआरएल में डाल सकें? मैंने this answer को देखने का प्रयास किया लेकिन जब भी मैं https://mail.google.com/ और https://www.googleapis.com/auth/userinfo#email दोनों का उपयोग अपने दायरे के रूप में करता हूं तो Google Bad Request देता है।

उत्तर

4

आप क्या कर रहे हैं Google Contacts API है। आप OAuth के माध्यम से अधिकृत कर रहे हैं, तो आप शायद वर्तमान में अनुमति के लिए पूछ रहे हैं जीमेल दायरे तक पहुँचने के लिए:

https://mail.google.com/mail/feed/atom 

आप संपर्कों क्षेत्र के लिए अनुमति के लिए पूछने की आवश्यकता होगी:

https://www.google.com/m8/feeds/ 

एक बार जब आप , आप निम्न के समान GET अनुरोध कर सकते हैं:

https://www.google.com/m8/feeds/contacts/default/full?max-results=1 

इस एक्सएमएल का एक समूह लौटना चाहिए, यहाँ कुछ प्रासंगिक बिट कर रहे हैं:

012,351,
<?xml version="1.0" encoding="UTF-8"?> 
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:gContact="http://schemas.google.com/contact/2008" xmlns:batch="http://schemas.google.com/gdata/batch" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CEcMRX0_eCp7ImA9WhdRF00.&quot;"> 
<id>[email protected]</id> 
... 
<author> 
    <name>Joe Bloggs</name> 
    <email>[email protected]</email> 
</author> 
... 
</feed> 

जैसा कि आप देख सकते हैं कि आप कुछ स्थानों पर अधिकृत उपयोगकर्ताओं का ईमेल पा सकते हैं।

यदि आप ओएथ का उपयोग कर रहे हैं तो आप Google OAuth खेल का मैदान भी देखना चाहेंगे, मुझे यह बहुत आसान लगता है: http://googlecodesamples.com/oauth_playground/index.php। यदि आप OAuth2 का उपयोग करने का निर्णय लेते हैं तो https://code.google.com/oauthplayground

+1

कि पूरी तरह से काम किया

मैं उदाहरण कोड के साथ इस बारे में एक पूरा लेख लिखा था। इसके अलावा खेल का मैदान काफी अच्छा है, इसके लिए धन्यवाद! – Joe

+1

इस उत्तर को जोड़ने के लिए, मैंने 'max-results = 0' का उपयोग करने का भी प्रयास किया और यह काम किया। आपको उस तरह से कम एक्सएमएल मिलता है और अभी भी '' तक पहुंच है। – Joe

1

स्कॉर्क्स उत्तर ठीक काम करता है लेकिन आपको सही API का उपयोग करना चाहिए।

https://www.googleapis.com/auth/userinfo.email 

के अतिरिक्त दायरे को जोड़कर आप इसे "सही तरीका" करते हैं! http://www.hackviking.com/2013/10/python-get-user-info-after-oauth/ कोड यहाँ उपलब्ध है:: https://code.google.com/p/google-api-oauth-demo/

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

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