2013-03-19 10 views

risposta

8

Ci sono molti diversi tipi Storage offerti da google-api-python-client, some dei quali sono welldocumented.

Alcuni esempi:

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

Non sto lavorando su Google App Engine Lo script dovrebbe eseguire sul server leggere alcuni file e popolare il database in base ai dati in tali file. Voglio solo configurarlo la prima volta, ad esempio incollare il collegamento del browser, quindi ottenere il codice autorizzato, incollarlo di nuovo sul terminale .Data leggerà sempre dallo stesso ID utente.Dopo dat anche se lo script si interrompe, quando lo riavvio dovrebbe leggere dalla memoria.Come per farlo lo faccio – Navi

3

penso che si dovrebbe dare credito a bossylobster per una risposta più completa, ma, sulla base di commento, che è appunto la mia messa a punto, ho aumentata l'quickstart.py utilizzando il Classe di archiviazione:

#!/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