Как я могу обновить токен OAuth2?Нужно ли ждать, пока токен не истечет?(Patreon API) - PullRequest
0 голосов
/ 18 мая 2018

Я пробую OAuth, используя API Патреона.Я очень плохо знаком с процессом OAuth и использовал пакет Javascript Patreon для управления запросом.

До сих пор я был в состоянии успешно получить токен с помощью:

import * as patreon from 'patreon';
const patreonOAuthClient = patreon.oauth(clientId, clientSecret);
patreonOAuthClient.getTokens(oauthGrantCode, redirectURL).then((tokenResponse) => { 
     console.log(tokenResponse);
})

Полученный токен выглядит так:

   // Example Token from getTokens()'s then()-response
   tokenResponse = {
        access_token: "UbHYT3H51GpeYueBeBuvBj1fnEFzv5A5870s_rYeMHo",
        expires_in: 2678400,
        refresh_token: "AP5aAw-gJbVf35tWxQb74rmJJz2MhwIYq660m0jiZQ4",
        scope: "my-campaign pledges-to-me users",
        token_type: "Bearer",
        version: "0.0.1"
    }

На моем локальном сервере я пытаюсь заставить работать токен обновления, поэтому мне не нужно постоянно спрашивать у пользователей разрешения каждый месяц.

Хотя, когда я использую метод обновления токена, я получаю 400Неверный запрос:

patreonOAuthClient.refreshToken(tokenResponse).then(response => {
      console.log(response, 'success!');
}).catch(err => {
      console.log(err, ':(');
});

Это не показано в документации по npm, но вы можете найти refreshToken () в исходном коде github patreon.

Согласно здесь в их документах API:

Если вы хотите получать актуальную информацию после истечения срока действия токена, может быть выпущен новый токен, который будетиспользуется на следующий месяц.Чтобы обновить токен, сделайте запрос POST к конечной точке токена с типом предоставления refresh_token, как в примере.Вы также можете вручную обновить токен на соответствующем клиенте на странице своих клиентов.

Поэтому я получаю 400, потому что мне нужно ждать месяц, чтобы обновить токен, или я просто ошибаюсьреализация API?Я надеюсь, что кто-то с большим опытом работы с OAuth может сказать мне, следует ли нам делать обновления токенов либо до , либо после срока действия токена?

(Если вы обновите его до истечения срока его действия, существует ли определенный способ рассчитать время, которое экспресс-сервер должен выполнить до истечения месяца? Как я думаю, добавление тайм-аута для каждого токена будет очень плохо для памяти).

1 Ответ

0 голосов
/ 19 мая 2018

Я наконец-то запустил SDK. Из исходного кода у меня сложилось впечатление, что токен - это объект, полученный из ответа.Но оказывается, что токен является строковым значением.

Итак:

// Using tokenResponse.refresh_token instead of just tokenResponse
patreonOAuthClient.refreshToken(tokenResponse.refresh_token).then(response => {
      console.log(response, 'success!');
}).catch(err => {
      console.log(err, ':(');
});
...