2012-04-21 16 views
9

Google पर 2-कारक प्रमाणीकरण (उर्फ 2-चरणीय सत्यापन) सक्षम करने के बाद से, मेरे Google export scripts अब काम नहीं करते हैं। कंप्यूटर सत्यापित और भरोसेमंद है, लेकिन किसी भी तरह स्क्रिप्ट नहीं हैं। असल में, हर बार क्रॉन नौकरी चलाने के बाद मुझे एक नया "Google सत्यापन कोड" मिलता है और स्क्रिप्ट विफल हो जाती है। मुझे लगता है कि wget या curl के साथ इस तरह की स्क्रिप्ट को प्रमाणित करने के लिए यह एक साधारण मामला होना चाहिए, लेकिन मुझे यह कैसे करना है इसके लिए कोई दस्तावेज नहीं मिला।स्क्रिप्ट में Google एप्लिकेशन-विशिष्ट पासवर्ड का उपयोग कैसे करें?


गूगल प्रमाणीकरण स्कीम कई पुनरावृत्तियों के माध्यम से चले गए हैं, और मैं अब curl या mechanicalsoup का उपयोग करने में लॉग इन करने लग सकता है। मैंने https://accounts.google.com/ServiceLogin?continue=https://calendar.google.com/calendar/exporticalzip&[email protected]&Passwd=application-specific-password जैसे यूआरएल का उपयोग करने की कोशिश की है, और मुझे हमेशा एक लॉगिन पेज पर रीडायरेक्ट किया जाता है, आमतौर पर संदेश के साथ "कृपया एप्लिकेशन-विशिष्ट पासवर्ड के बजाय अपने खाता पासवर्ड का उपयोग करें।"

+2

को देखने के लिए आप बल्कि इस पुराने पदावनत दृष्टिकोण से OAuth2 को उपयोग करने का प्रयास करना चाहिए चाहते हो सकता है, तो सत्यापन टोकन के साथ कम परेशानी है। – Tim

+0

@Tim: क्या शैल स्क्रिप्टिंग के साथ इसका उपयोग करने के लिए कोई मार्गदर्शिका है? – l0b0

+0

http://tools.ietf.org/html/draft-ietf-oauth-v2-25 पर यह दिखाता है कि यह कैसे करें। मुझे लगता है कि 'कर्ल' https सामान करने में सक्षम हो सकता है, और आप '--raw' के साथ अनुरोध पास कर सकते हैं? या शायद इस तरह की चीज फिट करने के लिए कर्ल के विकल्प हैं? – ams

उत्तर

0
+0

मैं यह नहीं समझ सकता कि इसे शैल स्क्रिप्ट से कैसे किया जाए। गूंजलिंग के * * * ने एक एकल शेल स्क्रिप्ट नहीं खोली है जो 2-चरणीय सत्यापन करने में सक्षम है। – l0b0

+0

कृपया लिंक जांचें - यह यादृच्छिक-जेनरेट किए गए पासवर्ड का उपयोग करके एक-चरण सत्यापन है, विशेष रूप से उन अनुप्रयोगों के लिए जो 2-चरणीय सत्यापन के साथ असंगत हैं। – Tgr

+0

"यदि आप Google Apps API डेवलपर हैं और क्लाइंट लॉजिन प्रमाणीकरण का उपयोग करते हैं" - मैं नहीं जानता, जहां तक ​​मुझे पता है - [प्रमाणीकरण स्क्रिप्ट] (https://github.com/l0b0/export/blob/master/GoogleAuth .sh) 'ServiceLoginAuth' का उपयोग करता है, और केवल एप्लिकेशन-विशिष्ट पासवर्ड के साथ पासवर्ड को प्रतिस्थापित नहीं करता है। – l0b0

0

एप्लिकेशन विशिष्ट पासवर्ड बनाना मेरी स्क्रिप्ट के लिए काम करता है, तुम सब जहाँ आप अपने Google खाता पासवर्ड के बजाय एप्लिकेशन विशिष्ट पासवर्ड में प्रवेश किया है पासवर्ड अपनी स्क्रिप्ट में बनाने और उसके बाद है।

आवेदन के बारे में अधिक विशिष्ट पासवर्ड के लिए यहाँ देखें:

Application Specific Passwords

आशा इस मदद करता है !!

+0

इसे पहले से ही कोशिश की, और यह अनुरोध स्वीकार नहीं किया। क्या आपके पास वास्तविक कोड उदाहरण है? – l0b0

4

क्या आप पूरी तरह से सुनिश्चित हैं कि आप शैल स्क्रिप्ट के साथ 2-कारक ऑथ का उपयोग करना चाहते हैं? यदि ऐसा है, तो आपको अपने कंप्यूटर या स्क्रिप्ट को "विश्वसनीय" के रूप में प्राप्त करने की आवश्यकता नहीं है। हर बार जब आप स्क्रिप्ट चलाते हैं तो आप पूर्ण 2-कारक ऑथ करते हैं।

लक्ष्य मैनुअल दूसरा कारक प्रमाणीकरण को छोड़ रहा है, मैं बजाय एप्लिकेशन-विशिष्ट पासवर्ड का उपयोग कर (के रूप में पहले से ही अन्य उत्तर ने सुझाव दिया) सुझाव देना चाहेंगे। बस बहाना है कि आप सभी पर 2-कारक प्रमाणीकरण का उपयोग नहीं कर रहे हैं और अपने वास्तविक लॉगिन नाम का उपयोग लेकिन https://accounts.google.com/b/0/IssuedAuthSubTokens?hl=en (https://www.google.com/settings/security के उपपृष्ठ) में उत्पन्न एक करने के लिए पासवर्ड सेट।

इसका उद्देश्य एप्लिकेशन-विशिष्ट पासवर्ड "नाम" को उस मान पर सेट करना है जो आपके लिए सार्थक है। उदाहरण के लिए, मैं पासवर्ड करार दिया है "काम पर Pidgin", "मेरा Android फ़ोन", "थंडरबर्ड Google पता पुस्तिका एक्सटेंशन काम पर" आदि "कैलेंडर और रीडर निर्यात स्क्रिप्ट" के लिए एक हो सकता था। यदि आपने कभी विश्वास किया है कि इस एप्लिकेशन-विशिष्ट पासवर्ड से समझौता किया गया है ("लीक"), तो उसी पृष्ठ पर "रद्द करें" लिंक दबाएं और फिर अपनी स्क्रिप्ट के लिए एक नया पासवर्ड उत्पन्न करें।

कोड के लिए, केवल अंतिम संस्करण का उपयोग करें जो Google एकल कारक ऑथ के साथ काम करता है। अद्यतन: क्योंकि मूल प्रश्न सत्र लॉगिन शुरू करने के लिए URL https://accounts.google.com/ServiceLogin का उपयोग करता है, यह व्यावहारिक रूप से ब्राउज़र लॉगिन को फ़िक्र कर रहा है। हालांकि, Google आधिकारिक तौर पर इसका समर्थन नहीं करता है और जैसा कि मैं इसे लिख रहा हूं, ऐसा लगता है कि सामान्य लॉगिन के लिए एप्लिकेशन विशिष्ट पासवर्ड का उपयोग त्रुटि संदेश के साथ समाप्त होगा "कृपया एप्लिकेशन-विशिष्ट पासवर्ड के बजाय अपने खाता पासवर्ड का उपयोग करें"। गूगल 2-कारक प्रमाणीकरण और "विश्वसनीय कंप्यूटर" के बारे में समझने के लिए

एक बात यह है कि वास्तविक क्रियान्वयन बस अपने ब्राउज़र के लिए 30 दिन समाप्ति समय के साथ एक स्थायी कुकी रख देता है है। विश्वसनीय कंप्यूटर का मतलब यह नहीं है कि आपका आईपी पता भरोसा किया गया था या कुछ अन्य जादुई कनेक्शन बनाए गए थे। जब तक आपकी स्क्रिप्ट आपके पसंद के ब्राउज़र से "विश्वसनीय कंप्यूटर" कुकी को कैप्चर नहीं करती है, तो इससे कोई फर्क नहीं पड़ता कि आपने कभी भी अपने कंप्यूटर को विश्वसनीय के रूप में चिह्नित किया है।(Google फॉर्म को यह नहीं कहना चाहिए कि "इस कंप्यूटर को 30 दिनों के लिए याद रखें" लेकिन "30 दिनों के लिए इस ब्राउज़र और उपयोगकर्ता खाता संयोजन पर विश्वास करें (स्थायी कुकी सहेजें)"। हालांकि, मुझे लगता है कि इसे बहुत तकनीकी माना जाता था ...)

अपडेट: (नीचे मेरी टिप्पणी से कॉपी किया गया) केवल आधिकारिक रूप से समर्थित विधि (सर्वर से सर्वर अनुप्रयोगों) को https://developers.google.com/accounts/docs/OAuth2ServiceAccount पर दस्तावेज किया गया है। इसके लिए OAuth/JWT अनुरोध को एन्कोडिंग और https://code.google.com/apis/console पर बनाए गए सेवा खाते की निजी कुंजी का उपयोग करना आवश्यक है। एक विकल्प के रूप में आप ClientLogin प्रमाणीकरण का उपयोग कर सकते हैं (पहले से ही बहिष्कृत, 2015 तक सर्वोत्तम प्रयास सेवा)।

आप OAuth के साथ जाने का फैसला करते हैं, तो आप http://blog.yjl.im/2010/05/bash-oauth.html और https://github.com/oxys-net/curl-oauth

+0

त्रुटि संदेश है "कृपया एप्लिकेशन-विशिष्ट पासवर्ड के बजाय अपने खाता पासवर्ड का उपयोग करें।" ऐसा लगता है कि एक बार 2-कारक लॉगिन सक्रिय होने पर Google सादे पासवर्ड लॉगिन का उपयोग करने के लिए सक्रिय रूप से किसी भी समर्थन को मार रहा है। केवल आधिकारिक रूप से समर्थित विधि (सर्वर से सर्वर अनुप्रयोगों) को https://developers.google.com/accounts/docs/OAuth2ServiceAccount पर दस्तावेज किया गया है। इसके लिए OAuth/JWT अनुरोध को एन्कोड करना और https://code.google.com/apis/console/ पर बनाए गए सेवा खाते की निजी कुंजी का उपयोग करना आवश्यक है। एक विकल्प के रूप में आप ClientLogin प्रमाणीकरण (2015 तक सर्वोत्तम प्रयास सेवा) का उपयोग कर सकते हैं। –

+1

यदि आप ओएथ के साथ जाने का फैसला करते हैं, तो आप http://blog.yjl.im/2010/05/bash-oauth.html और https://github.com/oxys-net/curl-oauth पर देखना चाहेंगे –

+0

यह अब काम नहीं करता है, इसलिए मैं एक और समाधान की तलाश में हूं ... – l0b0

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

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