Kontakte mit gdata.contacts.client und oauth2 abrufen

Ich verwende oAuth2WebServerFlow, um ein oAuth-Zugriffstoken abzurufen und dann eine Liste der Kontakte eines Benutzers abzurufen. Ich verwende web2py als Webframework.

    flow = oauth2client.client.OAuth2WebServerFlow(client_id=CLIENT_ID,
                                                   client_secret=CLIENT_SECRET,
                                                  scope='https://www.google.com/m8/feeds', 
                                                   user_agent=USER_AGENT)
    callback = 'http://127.0.0.1:8000/Test/searcher/oauth2callback'
    authorise_url = flow.step1_get_authorize_url(callback)
    session.flow = pickle.dumps(flow)
    redirect(authorise_url) 

Mit der Umleitung wird dann wie folgt umgegangen

flow = pickle.loads(session.flow)
credentials = flow.step2_exchange(request.vars) 

Meine Frage ist, wie man das oben zurückgegebene OAuth2Credentials-Objekt in ein OAuth2AccessToken-Objekt ändert, mit dem ich dann eine Anfrage an die Kontaktbibliothek autorisieren kann.

gc = gdata.contacts.client.ContactsClient(source="")
token.authorize(gc)
gc.GetContacts

Ich habe verschiedene Methoden ohne Erfolg ausprobiert und normalerweise die Meldung oAuth2AccessTokenError "Invalid Grant" erhalten. Ich denke, so etwas könnte funktionieren, aber ich denke auch, dass es einen einfacheren Weg geben muss!

token = gdata.gauth.OAuth2Token(client_id=CLIENT_ID, client_secret=CLIENT_SECRET, scope='https://www.google.com/m8/feeds', user_agent=USER_AGENT)

    token.redirect_uri = 'http://127.0.0.1:8000/Test/searcher/oauth2callback'
    token.get_access_token(<<code to pass the access_token out of the Credentials object??>>)

Kann mir jemand dabei helfen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage