2014-12-04 12 views
15

मैं एक सेवा खाता ऐप बनाने की कोशिश कर रहा हूं ताकि मैं पाइथन का उपयोग करके Google Analytics एपीआई एक्सेस कर सकूं। दो चीजें मुझे भ्रमित कर रही हैं। सबसे पहले, जब मैं निम्नलिखित कोड का उपयोग करें:
सेवा खाते का उपयोग कर Google एपीआई एक्सेस oauth2client.client.CryptoUnavailableError: कोई क्रिप्टो लाइब्रेरी उपलब्ध नहीं है

`from oauth2client.client import SignedJwtAssertionCredentials 
client_email = "#####client_email#######.gserviceaccount.com" 
with open("XXXXXX.p12") as f: 
    private_key = f.read() 
credentials = SignedJwtAssertionCredentials(client_email, private_key,'https://www.googleapis.com/auth/sqlservice.admin')` 

मैं निम्नलिखित त्रुटि मिलती है:

`oauth2client.client.CryptoUnavailableError: No crypto library available` 

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

उत्तर

12

उस त्रुटि का शायद मतलब है कि आपको पायथन-ओपनएसएल पैकेज की आवश्यकता है।

apt-get install python-openssl 
4

मैं अभी हाल ही में सेट अप किया लेकिन PyCrypto 2.6.1 साथ जाना चाहते थे, लेकिन आप यह भी अजगर-openssl पिछले जवाब में बताया गया के रूप में उपयोग कर सकते हैं।

मेरी एकमात्र समस्या है और मैं इसे नीचे इंगित नहीं कर सकता, लेकिन Google डेवलपर कंसोल द्वारा उत्पन्न पी 12 कुंजी मेरे सेवा खाता API कॉल (खरीदारी के लिए सामग्री API पर) के साथ काम नहीं कर रही थी, और मेरे पास था चीज़ों को पाने के लिए पीईएम प्रारूप में कुंजी स्विच करने के लिए।

मेरे सेटअप: (Win7, अजगर 2.7.x, PyCrypto 2.6.1)

त्रुटि मुझे मिल गया जब जब यह पीईएम को बदलने P12 कुंजी का उपयोग करने की कोशिश कर, लेकिन बाद में हल हो:

त्रुटि 3: पीकेसीएस 12 प्रारूप PyCrypto लाइब्रेरी द्वारा समर्थित नहीं है। NotImplementedError: PKCS12 प्रारूप PyCrypto लाइब्रेरी द्वारा समर्थित नहीं है। मूल कोड एक विकल्प है, तो "पीईएम" (openssl pkcs12 -in xxxxx.p12 -nodes -nocerts> privatekey.pem) में कनवर्ट करने या PyOpenSSL का उपयोग करने का प्रयास करें।

एक महत्वपूर्ण बात, Google Analytics के अंदर जाना न भूलें और सेवा खाते के निर्माण के दौरान बनाए गए क्लाइंट ईमेल पते के लिए उचित अनुमति दें।

+0

जब एक 'pem' को' p12' फ़ाइल में परिवर्तित करने के रूप में @davidtzau आपसे मेल खाता है 'डिफ़ॉल्ट पासफ्रेज़ दर्ज करना होगा जिसे Google' p12' फ़ाइल पर सेट करता है जो 'notasecret' है। जब 'पेम' सामग्री नई 'पेम' फ़ाइल में आउटपुट होती है तो यह अब पासफ्रेज़ द्वारा संरक्षित नहीं होती है। इस तथ्य के बावजूद, oauth2client मॉड्यूल पासफ्रेज़ के बिना 'पेम' सामग्री को गहराई से स्वीकार करता है, हालांकि यह डिफ़ॉल्ट रूप से 'नोटसेक्रेट' का पासफ्रेज मानता है: https://google-api-python-client.googlecode.com/hg/docs/epy /oauth2client.client.SignedJwtAssertionCredentials-class.html –

7

भले ही आप pycrypto अपने विकास के वातावरण में & अजगर-ssl पुस्तकालयों स्थापित कर रहे हैं, आपको अपने आवेदन की app.yaml फ़ाइल में इस pycrypto लाइब्रेरी को जोड़ना होगा।

libraries: 
- name: pycrypto 
    version: "latest" 
+2

धन्यवाद! यह वह टुकड़ा था जिसे मैं याद कर रहा था। यही कारण है कि आपको हमेशा स्वीकार्य उत्तर से अधिक पढ़ना चाहिए :) –

+0

pycrypto अब लाइब्रेरी प्रदान करने वाला एक डिफ़ॉल्ट रनटाइम है, और हम app.yaml को अपडेट करके इसे शामिल/उपयोग कर सकते हैं। इसका यह भी अर्थ है कि हमें अपनी कोई भी तृतीय-पक्ष lib शामिल करने की आवश्यकता नहीं है। बस सोचा कि जानकारी किसी ऐसे व्यक्ति के लिए उपयोगी हो सकती है जो अपनी परियोजना में भी lib शामिल था। – radhashankark

31

यह (पीईएम में रूपांतरित किए बिना) मेरे लिए चाल किया:

pip install PyOpenSSL 

pip freeze कहता है कि मैं संस्करण 0.15.1

0

OSX 10.11 एल कैप्टन अब OpenSSL वितरित नहीं करता है।मैं Homebrew और स्थिर निर्माण का उपयोग कर cryptography स्थापित करने में सक्षम था:

env CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1 LDFLAGS="$(brew --prefix openssl)/lib/libssl.a $(brew --prefix openssl)/lib/libcrypto.a" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography 

अधिक जानकारी

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