Python 使用带有证书身份验证的电子表格API OAuth2
我正在尝试将Gdata电子表格API与OAuth2一起使用 使用OAuth2.0 ClientID可在域上使用OAuth2WebServerFlow, 但是使用服务帐户/证书会导致错误的请求 使用的范围是Python 使用带有证书身份验证的电子表格API OAuth2,python,gdata,google-oauth,google-spreadsheet-api,google-apps-marketplace,Python,Gdata,Google Oauth,Google Spreadsheet Api,Google Apps Marketplace,我正在尝试将Gdata电子表格API与OAuth2一起使用 使用OAuth2.0 ClientID可在域上使用OAuth2WebServerFlow, 但是使用服务帐户/证书会导致错误的请求 使用的范围是 https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/admin.directory.g
https://www.googleapis.com/auth/userinfo.email
https://www.googleapis.com/auth/userinfo.profile
https://www.googleapis.com/auth/admin.directory.group.readonly
https://www.googleapis.com/auth/admin.directory.user.readonly
https://docs.google.com/feeds/
https://spreadsheets.google.com/feeds
这是我正在使用的代码
成功:OAuth2.0
flow = OAuth2WebServerFlow(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET,
scope=SCOPE,
access_type = "online",
redirect_uri=REDIRECT_URI)
credentials = flow.step2_exchange(code)
auth2token = gauth.OAuth2Token(
client_id=credentials.client_id,
client_secret=credentials.client_secret,
scope=SCOPE,
access_token=credentials.access_token,
refresh_token=credentials.refresh_token,
user_agent='spreadsheetclient/1.0',)
client = SpreadsheetsClient(auth_token=auth2token)
auth2token.authorize(client)
q = SpreadsheetQuery(title= "ItemMaster",title_exact=True)
feed = client.get_spreadsheets(query = q)
未能通过Oauth2.0证书
credentials = SignedJwtAssertionCredentials(
SERVICE_ACCOUNT_EMAIL,
CERTIFICATE,
scope = SCOPE,
prn = "admin@domain.com"
)
http = httplib2.Http()
http = credentials.authorize(http)
auth2token = gauth.OAuth2Token(
client_id=credentials.client_id,
client_secret=credentials.client_secret,
scope=SCOPE,
access_token=credentials.access_token,
refresh_token=credentials.refresh_token,
user_agent='spreadsheetclient/1.0',)
client = SpreadsheetsClient()
auth2token.authorize(client)
q = SpreadsheetQuery(title= "ItemMaster",title_exact=True,)
feed = client.get_spreadsheets(query = q)
那么,有没有一种方法可以让证书身份验证在GDataAPI中工作呢?我通过使用
OAuth2TokenFromCredentials
credentials = SignedJwtAssertionCredentials(
SERVICE_ACCOUNT_EMAIL,
PRIVATE_KEY,
scope = SCOPE,
sub = "admin@domain.com")
auth2token = gauth.OAuth2TokenFromCredentials(credentials)
client = SpreadsheetsClient()
auth2token.authorize(client)
q = SpreadsheetQuery(title= "ItemMaster",title_exact=True,)
feed = client.get_spreadsheets(query = q)
self.response.write(feed)
我通过使用
OAuth2TokenFromCredentials
credentials = SignedJwtAssertionCredentials(
SERVICE_ACCOUNT_EMAIL,
PRIVATE_KEY,
scope = SCOPE,
sub = "admin@domain.com")
auth2token = gauth.OAuth2TokenFromCredentials(credentials)
client = SpreadsheetsClient()
auth2token.authorize(client)
q = SpreadsheetQuery(title= "ItemMaster",title_exact=True,)
feed = client.get_spreadsheets(query = q)
self.response.write(feed)