Ich möchte data.photos.service.PhotosService
verwenden, um Fotos aus Picasa zu pushen und zu ziehen. Ich habe eine Serviceschlüsseldatei XXXXXXXX-privatekey.p12 von der Google-Konsole erhalten und versuche nun, diesen Schlüssel mit Google zu authentifizieren.Verwenden von OAuth2 mit Dienstkonto auf gdata in Python
Die Dokumentation für OAuth2 mit appengine hat mich dazu gebracht, den folgenden, dass die Verwendung wäre der Einsatz zu glauben:
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'[email protected]', u'email': u'[email protected]'}
Das Problem ist, dass entweder Methode 1 unter Verwendung von SetOAuthInputParameters
gibt einen ungültigen Token oder Methode 2 kehrt eine 403 restricted
.
Ich bin am Ende meines Wissens durch Berge von Code zu lesen, die alle regelmäßigen 3-beinigen oauth tun, wenn ich es wirklich und wirklich nicht so machen will. Irgendwelche Ideen/Artikel, die ich noch nicht gesehen habe?
Wie haben Sie den Benutzer im Aufruf 'SignedJwtAssertionCredentials' angegeben? – Gautam
Ich habe die Antwort aktualisiert. –
Ich bekomme HTTP 400 damit, ich benutze die Tabellenkalkulation API – Gautam