2013-03-19 81 views

回答

8

google-api-python-clientsome其中welldocumented有很多不同的Storage类型。

一些例子:

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 App Engine上工作脚本应该在服务器上运行,读取一些文件并根据这些文件中的数据填充数据库。我只是想配置它第一次即粘贴链接它的浏览器,然后获得授权代码,粘贴回到终端。数据将始终从相同的用户id读取。dat后,即使脚本停止,当我重新启动它应该从storage.How做我做的。 – Navi 2013-03-20 11:06:12

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 
相关问题