我想用来data.photos.service.PhotosService
从 Picasa 推送和拉取照片。我从 Google 控制台获得了一个服务密钥文件 XXXXXXXX-privatekey.p12,现在我正在尝试使用该密钥与 google 进行身份验证。
使用 appengine 的 OAUTH2 文档让我相信使用以下内容会很有用:
f = file(settings.SITE_ROOT + '/aurora/' + settings.PRIVATE_KEY, 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(settings.SERVICE_ACCOUNT_NAME, key, scope = 'http://picasaweb.google.com/data https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile')
http = httplib2.Http()
http = credentials.authorize(http)
service = build("oauth2", "v2", http=http)
user_info = None
try:
user_info = service.userinfo().get().execute()
# neither of these two methods work
#gd_client.SetOAuthInputParameters(signature_method = gdata.auth.OAuthSignatureMethod.RSA_SHA1, consumer_key = "asdfasdfasdf.apps.googleusercontent.com", rsa_key = key, two_legged_oauth = True, requestor_id = user_info.get('email'))
#gd_client.auth_token = gdata.gauth.TwoLeggedOAuthRsaToken(consumer_key = user_info.get('email'), rsa_private_key = key, requestor_id = user_info.get('email'))
except errors.HttpError, e:
logging.error('An error occurred: %s', e)
user_inf0 = {u'verified_email': True, u'id': u'1234', u'name': u'asdfasdfasdf@developer.gserviceaccount.com', u'email': u'asdfasdfasdf@developer.gserviceaccount.com'}
问题是方法 1 usingSetOAuthInputParameters
返回一个无效的令牌,或者方法 2 返回一个403 restricted
.
当我真的真的不想那样做时,我正在阅读大量的代码,这些代码都执行常规的 3 legged oauth。我还没有看到任何想法/文章?