2012-12-27 21 views
12

के साथ Google कैलेंडर API v 3 का उपयोग करके कोई मुझे कृपया एक स्पष्ट स्पष्टीकरण दे सकता है कि Google कैलेंडर API v3 को पायथन क्लाइंट के साथ कैसे काम करना है? विशेष रूप से, शुरुआती ओथ चरण मुझे बहुत भ्रमित कर रहा है। मुझे बस इतना करना है कि मैं अपने कैलेंडर तक पहुंचूं, इसे पढ़ूं, और इसमें बदलाव करूँ। गूगल ने मेरा एप्लिकेशन विन्यस्त करने के लिए इस कोड को प्रदान करता है:पाइथन

import gflags 
import httplib2 

from apiclient.discovery import build 
from oauth2client.file import Storage 
from oauth2client.client import OAuth2WebServerFlow 
from oauth2client.tools import run 

FLAGS = gflags.FLAGS 

# Set up a Flow object to be used if we need to authenticate. This 
# sample uses OAuth 2.0, and we set up the OAuth2WebServerFlow with 
# the information it needs to authenticate. Note that it is called 
# the Web Server Flow, but it can also handle the flow for native 
# applications 
# The client_id and client_secret are copied from the API Access tab on 
# the Google APIs Console 
FLOW = OAuth2WebServerFlow(
    client_id='YOUR_CLIENT_ID', 
    client_secret='YOUR_CLIENT_SECRET', 
    scope='https://www.googleapis.com/auth/calendar', 
    user_agent='YOUR_APPLICATION_NAME/YOUR_APPLICATION_VERSION') 

# To disable the local server feature, uncomment the following line: 
# FLAGS.auth_local_webserver = False 

# If the Credentials don't exist or are invalid, run through the native client 
# flow. The Storage object will ensure that if successful the good 
# Credentials will get written back to a file. 
storage = Storage('calendar.dat') 
credentials = storage.get() 
if credentials is None or credentials.invalid == True: 
    credentials = run(FLOW, storage) 

# Create an httplib2.Http object to handle our HTTP requests and authorize it 
# with our good Credentials. 
http = httplib2.Http() 
http = credentials.authorize(http) 

# Build a service object for interacting with the API. Visit 
# the Google APIs Console 
# to get a developerKey for your own application. 
service = build(serviceName='calendar', version='v3', http=http, 
     developerKey='YOUR_DEVELOPER_KEY') 

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

+9

मुझे Google कैलेंडर API v3 दस्तावेज़ अविश्वसनीय रूप से गुप्त लगता है। – Dimitris

उत्तर

13

ऐसा करने के लिए एक सरल (पढ़ें: जिस तरह से मैंने इसे किया है) एक सेवा खाते की बजाय वेब एप्लिकेशन बनाना है। यह अजीब लग सकता है क्योंकि आपको किसी भी प्रकार के वेब एप्लिकेशन की आवश्यकता नहीं है, लेकिन मैं इसका उपयोग उसी तरह करता हूं - अपने कैलेंडर/कुछ ईवेंट/इत्यादि में कुछ प्रश्न पूछें। - कमांड लाइन से और बिना किसी प्रकार के वेब-ऐप इंटरैक्शन के। सेवा खाते के साथ ऐसा करने के तरीके हैं (अगर आप वास्तव में उस मार्ग पर जाना चाहते हैं तो मैं चारों ओर झुकाऊंगा), लेकिन इसने मेरे लिए अब तक काम किया है।

आपके द्वारा वेब एप्लिकेशन बनाने के बाद, आपके पास ऊपर बताई गई सारी जानकारी होगी (साइड नोट: उपरोक्त नमूना कोड वेब एप्लिकेशन पर आधारित है - एक सेवा खाते का उपयोग करने के लिए FLOW को flow_from_clientsecrets पर कॉल करने की आवश्यकता है और आगे समायोजन बनाने की आवश्यकता है - here देखें)। इसलिए यदि आप इस अनुभाग को भरने के लिए सक्षम हो जाएगा:

FLOW = OAuth2WebServerFlow(
    client_id='YOUR_CLIENT_ID', 
    client_secret='YOUR_CLIENT_SECRET', 
    scope='https://www.googleapis.com/auth/calendar', 
    user_agent='YOUR_APPLICATION_NAME/YOUR_APPLICATION_VERSION') 

अब आप ये मान API कंसोल (client_id में देखते हैं के साथ भर सकते हैं = पूरे Client ID स्ट्रिंग, client_secret = ग्राहक गुप्त, scope ही है और user_agent जो भी आप चाहते हैं हो सकता है)। service लाइन का सवाल है, developerKey API कुंजी आप API कंसोल में Simple API Access धारा के तहत प्राप्त कर सकते हैं (लेबल API key है):

service = build(serviceName='calendar', version='v3', http=http, 
    developerKey='<your_API_key>') 

फिर आप अगर यह देखने के लिए निम्नलिखित की तरह एक साधारण जाँच में जोड़ सकते हैं काम:

events = service.events().list(calendarId='<your_email_here>').execute() 
print events 

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

storage = Storage('calendar.dat') 
credentials = storage.get() 
if credentials is None or credentials.invalid == True: 
    credentials = run(FLOW, storage) 

यह है कि फाइल की तलाश में और सामग्री को सत्यापित करके मान्य क्रेडेंशियल्स के अस्तित्व के लिए जाँच करता है (यह सब तुम से दूर निकाला है यह आसान लागू करने के लिए बनाने के लिए)। प्रमाणीकरण के बाद, if कथन False का मूल्यांकन करेगा और आप फिर से प्रमाणीकृत करने के बिना अपने डेटा तक पहुंच पाएंगे।

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

-1

Google के पास अब एक अच्छा नमूना एप्लिकेशन है जो आपको बिना किसी परेशानी के चलाता है और दौड़ता है। यह उनके Getting Started पृष्ठ पर "5 मिनट का अनुभव - क्विकस्टार्ट" के रूप में उपलब्ध है।

यदि आप ब्राउज़र के बिना रिमोट सर्वर पर काम कर रहे हैं तो यह आपको सीधे देखने के लिए एक यूआरएल देगा।

+0

इस समय, यह कुछ भी अच्छा नहीं देता है; आप बस एक जेनरेट प्रोजेक्ट प्राप्त करते हैं जो आपको ओएथ के बारे में बताता है, उसके बाद "सफलता! अब कोड जोड़ें।" यह आपको [विभिन्न] (https://developers.google.com/google-apps/calendar/firstapp) [लिंक] पर इंगित करता है (https://developers.google.com/resources/api-libraries/documentation/calendar/v3/पायथन/नवीनतम /) जहां आप इसे स्वयं भी करना चाहते हैं। – Mendhak