2009-11-21 6 views
10

जीमेल में परमाणु फ़ीड प्राप्त करने के लिए इस मीठी चीज चल रही है:पाइथन के साथ जीमेल परमाणु फ़ीड में ऑटो लॉग कैसे करें?

def gmail_url(user, pwd): 
    return "https://"+str(user)+":"+str(pwd)+"@gmail.google.com/gmail/feed/atom" 

अब जब आप ब्राउज़र में ऐसा करते हैं, तो यह आपको प्रमाणित करता है और आगे देता है। लेकिन पाइथन में, कम से कम मैं जो कोशिश कर रहा हूं, वह सही काम नहीं कर रहा है।

url = gmail_url(settings.USER, settings.PASS) 
print url 
opener = urllib.FancyURLopener() 
f = opener.open(url) 
print f.read() 

सही ढंग से अग्रेषित करने के बजाय, यह ऐसा कर रहा है:

>>> 
https://user:[email protected]/gmail/feed/atom 
Enter username for New mail feed at mail.google.com: 

यह खराब है! मुझे फिर से उपयोगकर्ता नाम और पासवर्ड टाइप करना नहीं चाहिए !! मैं इसे अपने वेब ब्राउज़र में पाइथन में केवल ऑटो-फ़ॉरवर्ड कैसे कर सकता हूं, इसलिए मैं सभी बीएस के बिना फ़ीड सामग्री प्राप्त कर सकता हूं?

उत्तर

13

आप HTTPBasicAuthHandler उपयोग कर सकते हैं, मैंने कोशिश की निम्नलिखित है और यह काम किया:

import urllib2 

def get_unread_msgs(user, passwd): 
    auth_handler = urllib2.HTTPBasicAuthHandler() 
    auth_handler.add_password(
     realm='New mail feed', 
     uri='https://mail.google.com', 
     user='%[email protected]' % user, 
     passwd=passwd 
    ) 
    opener = urllib2.build_opener(auth_handler) 
    urllib2.install_opener(opener) 
    feed = urllib2.urlopen('https://mail.google.com/mail/feed/atom') 
    return feed.read() 
+2

मैं हो रही है 'urllib2.HTTPError: HTTP त्रुटि 401: मूल प्रमाणीकरण विफल', भले ही मैं सकारात्मक मैं कर रहा हूँ उपयोगकर्ता नाम और पासवर्ड सही है। क्या किसी और को यह समस्या हो रही है? –

+0

कभी नहीं। यह केवल एक समस्या है जब मैं अपने सर्वर से कोड चलाने की कोशिश करता हूं। मेरी स्थानीय मशीन पर ऐसा करने पर यह ठीक काम करता है। –

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