2013-03-19 9 views
5

मैं पाइथन का उपयोग करके Google ड्राइव के लिए quickstart.py निष्पादित करने में सक्षम हूं। लेकिन हम टोकन को कैसे स्टोर करते हैं और इसे फिर से उपयोग करते हैं - फिर उपयोगकर्ता को संकेत दिए बिना उसी उपयोगकर्ता के लिए। क्या Google ड्राइव पर फ़ाइल भेजने के लिए अनुरोध करते समय उनका कोई तरीका है कि मैं एक्सेस टोकन के साथ उपयोगकर्ता को मैप कर सकता हूं।एप्लिकेशन खाते से ड्राइव डेटा तक पहुंचने के लिए Google OAuth 2.0 से स्टोर एक्सेस टोकन

उत्तर

8

कई अलग अलग Storage जिनमें से somewelldocumented हैं google-api-python-client द्वारा की पेशकश की प्रकार के होते हैं।

कुछ उदाहरण:

oauth2client.file.Storage:

from oauth2client.file import Storage 
... 
storage = Storage('a_credentials_file') 
storage.put(credentials) 
... 
credentials = storage.get() 

oauth2client.keyring_storage.Storage:

from oauth2client.keyring_storage import Storage 
... 
storage = Storage('application name', 'user name') 
storage.put(credentials) 
... 
credentials = storage.get() 

oauth2client.appengine.StorageByKeyName:

from oauth2client.keyring_storage import StorageByKeyName 
from oauth2client.keyring_storage import CredentialsNDBModel 
... 
storage = StorageByKeyName(CredentialsNDBModel, some_user_id, 'credentials') 
storage.put(credentials) 
... 
credentials = storage.get() 

oauth2client.django_orm.Storage:

from django.contrib.auth.models import User 
from oauth2client.django_orm import Storage 
from your_project.your_app.models import CredentialsModel 
... 
user = # A User object usually obtained from request. 
storage = Storage(CredentialsModel, 'id', user, 'credential') 
credential = storage.get() 
... 
storage.put(credential) 
+0

मैं Google अनुप्रयोग इंजन पर काम नहीं कर रहा हूँ स्क्रिप्ट कुछ फ़ाइलों को पढ़ने के लिए उन फ़ाइलों में डेटा के आधार पर सर्वर पर चलाने के लिए और डेटाबेस को भरने के लिए माना जाता है। मैं बस इसे पहली बार कॉन्फ़िगर करना चाहता हूं यानी ब्राउज़र को लिंक करना, फिर अधिकृत कोड प्राप्त करना, इसे टर्मिनल पर वापस चिपका देना .टा हमेशा एक ही उपयोगकर्ता आईडी से पढ़ेगा। स्क्रिप्ट बंद होने पर भी, अगर मैं इसे पुनरारंभ करता हूं तो उसे स्टोरेज से पढ़ना चाहिए। कैसे ऐसा करने के लिए मैं करता हूँ। – Navi

3

मुझे लगता है कि आप एक अधिक पूरा जवाब के लिए bossylobster को ऋण देना चाहिए, लेकिन अपनी टिप्पणी है, जो वास्तव में मेरे सेटअप है के आधार पर, मैं quickstart.py का उपयोग कर संवर्धित किया है भंडारण वर्ग:

#!/usr/bin/python                               
import httplib2 
import pprint 

from apiclient.discovery import build 
from apiclient.http import MediaFileUpload 
from oauth2client.client import OAuth2WebServerFlow 
from oauth2client.file import Storage 

# Copy your credentials from the console                         
CLIENT_ID = 'PASTE_YOUR_ID' 
CLIENT_SECRET = 'PASTE_YOUR_SECRET' 

# Check https://developers.google.com/drive/scopes for all available scopes                
OAUTH_SCOPE = 'https://www.googleapis.com/auth/drive' 

# Redirect URI for installed apps                           
REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob' 

# Create a credential storage object. You pick the filename. 
storage = Storage('a_credentials_file') 

# Attempt to load existing credentials. Null is returned if it fails. 
credentials = storage.get() 

# Only attempt to get new credentials if the load failed. 
if not credentials: 

    # Run through the OAuth flow and retrieve credentials                     
    flow = OAuth2WebServerFlow(CLIENT_ID, CLIENT_SECRET, OAUTH_SCOPE, REDIRECT_URI) 

    authorize_url = flow.step1_get_authorize_url() 
    print 'Go to the following link in your browser: ' + authorize_url 
    code = raw_input('Enter verification code: ').strip() 

    credentials = flow.step2_exchange(code) 
    storage.put(credentials) 


# Create an httplib2.Http object and authorize it with our credentials                  
http = httplib2.Http() 
http = credentials.authorize(http) 
drive_service = build('drive', 'v2', http=http) 

# Use 'drive_service' for all of the API calls 
संबंधित मुद्दे