Sono in grado di eseguire quickstart.py per Google Drive utilizzando python. Ma come conserviamo il token e lo usiamo di nuovo, sempre per lo stesso utente, senza chiedere all'utente. È in qualche modo che posso mappare l'utente con un token di accesso durante l'invio di una richiesta di file su Google Drive.Accedi token di accesso da Google OAuth 2.0 per accedere ai dati dell'unità dall'account dell'applicazione
5
A
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)
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
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