【发布时间】:2013-04-08 05:21:06
【问题描述】:
我想使用data.photos.service.PhotosService 从 Picasa 推送和拉取照片。我从 Google 控制台获得了一个服务密钥文件 XXXXXXXX-privatekey.p12,现在我正在尝试使用该密钥与 google 进行身份验证。
OAUTH2 使用 appengine 的文档让我相信使用以下内容会很有用:
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'}
问题是使用 SetOAuthInputParameters 的方法 1 返回无效令牌,或者方法 2 返回 403 restricted。
当我真的并且真的不想那样做时,我正在阅读大量的代码,这些代码都执行常规的 3 legged oauth。我还没有看到任何想法/文章吗?
【问题讨论】:
标签: google-app-engine oauth-2.0 gdata picasa google-api-client