Получение контактов с помощью gdata.contacts.client и oauth2

Я использую oAuth2WebServerFlow, чтобы получить токен доступа oAuth, а затем получить список контактов пользователя. Я использую web2py в качестве веб-фреймворка.

    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) 

С переадресацией затем обрабатываются следующим образом

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

Мой вопрос заключается в том, как изменить объект OAuth2Credentials, возвращенный выше, в объект OAuth2AccessToken, который я затем могу использовать для авторизации запроса к библиотеке контактов с помощью чего-то вроде:

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

Я пробовал различные методы, но безуспешно, обычно получая сообщение oAuth2AccessTokenError «Invalid Grant». Я думаю, что-то подобное может сработать, но я также думаю, что должен быть более простой способ!

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??>>)

Может кто-нибудь помочь с этим?

Ответы на вопрос(2)

Ваш ответ на вопрос