Recuperando contatos com gdata.contacts.client e oauth2

Estou usando o oAuth2WebServerFlow para obter um token de acesso oAuth e, em seguida, recuperar uma lista de contatos de um usuário. Estou usando o web2py como estrutura da web.

    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) 

Com o redirecionamento então sendo tratado da seguinte forma

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

Minha pergunta é como alterar o objeto OAuth2Credentials retornado acima em um objeto OAuth2AccessToken, que eu possa usar para autorizar uma solicitação para a biblioteca de contatos com algo como:

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

Eu tentei vários métodos sem sucesso, normalmente recebendo uma mensagem oAuth2AccessTokenError de "Concessão inválida". Eu estou pensando que algo assim pode funcionar, mas também acho que deve haver uma maneira mais simples!

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

Alguém pode ajudar com isso?

questionAnswers(2)

yourAnswerToTheQuestion