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