Использовать токен доступа после его принятия? - PullRequest
1 голос
/ 10 февраля 2012

Я сейчас пытаюсь разработать приложение GAE.

Я следовал этому руководству, чтобы получить доступ к gdocs с помощью OAuth. http://code.google.com/appengine/articles/python/retrieving_gdata_feeds.html

Чего я не могу понять, так это как впоследствии использовать этот токен.

Если я напрямую пытаюсь получить доступ к каналам во втором соединении, я получаю отскок из-за отсутствия авторизации (401). Я думаю, что мне нужно каждый раз проходить аутентификацию, используя access_token в моем объекте Gdocs, но я не могу найти правильный способ сделать это.

Есть идеи?

Мой код такой же, как в учебнике, плюс:

# Create an instance of the DocsService to make API calls
gdocs = gdata.docs.client.DocsClient(source = SETTINGS['APP_NAME'])

class MainPage(webapp.RequestHandler):
@login_required
def get(self):
    my_user = users.get_current_user()

    # I think I have to authenticate, but don't know how here 
    token_key = 'access_token_%s' % my_user.user_id()
    access_token = gdata.gauth.ae_load(token_key)
    gdocs.auth_token = gdocs.get_access_token(access_token)

    feed = gdocs.GetResources()
    for entry in feed.entry:
        template = '<div>%s</div>'
        self.response.out.write(template % entry.title.text)

Который запускается по умолчанию.

Я знаю, что у меня есть доступ к ключу токена с помощью ae_load (token_key), поскольку я могу его распечатать. Должен ли я использовать gdocs для аутентификации или более общий клиент, как показано здесь: http://ikaisays.com/2011/05/26/setting-up-an-oauth-provider-on-google-app-engine/

Я проверил, и мой токен указан в моей личной учетной записи Google.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Я наконец-то ответил на свой вопрос, выполнив поиск в Google API.

Вот как я его использую:

    access_token_key = 'access_token_%s' % user.user_id()
    access_token = gdata.gauth.ae_load(access_token_key)       
    # authenticating here
    #gdocs.auth_token = access_token

Другая версия может быть такой:

    #gdocs.auth_token = gdata.gauth.OAuthHmacToken(SETTINGS['CONSUMER_KEY'], 
    #                                               SETTINGS['CONSUMER_SECRET'], 
    #                                               access_token,
    #                                               access_token_key, 
    #                                               gdata.gauth.ACCESS_TOKEN) 

как указано в документе Google.

1 голос
/ 11 февраля 2012

Вы должны сохранить auth_token или данные, чтобы восстановить его в хранилище данных. Затем при создании объектов запроса передайте auth_token. Это объясняется в GDClient строка документа .

Может также оказаться полезной статья о получении фидов gdata .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...