2013-03-19 4 views

Antwort

8

Es gibt viele verschiedene Arten von Storagegoogle-api-python-client angeboten, some davon welldocumented sind.

Einige Beispiele:

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

Ich arbeite nicht auf Google App Engine Das Skript soll auf dem Server laufen einige Dateien lesen und Datenbank basierend auf Daten in diesen Dateien zu füllen. Ich möchte es nur zum ersten Mal konfigurieren, dh Link-Browser einfügen dann authorized Code, Einfügen es zurück zum Terminal .Data wird immer von der gleichen Benutzer-ID lesen.Nach dat selbst wenn Skript stoppt, wenn ich neu starten sollte es aus dem Speicher lesen um es zu tun. – Navi

3

Ich denke, Sie sollten Kredit für eine vollständige Antwort auf bossylobster geben, aber basierend auf Ihren Kommentar, die meine genau aufgebaut ist, habe ich die quickstart.py mit der Augmented Storage-Klasse:

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