rehat - Bagaimana saya boleh menyegarkan token OAuth2? Adakah saya perlu menunggu token itu Tamat Tempoh? (API Patreon)
Saya sedang mencuba OAuth menggunakan API Patreon. Saya baru dalam proses OAuth dan telah menggunakan Pakej Javascript Patreon untuk membantu menguruskan permintaan untuk saya.
- NPM: https://www.npmjs.com/package/patreon
- Dokumentasi Patreon: https://docs.patreon.com/#introduction
Setakat ini saya telah berjaya mendapatkan token melalui:
import * as patreon from 'patreon';
const patreonOAuthClient = patreon.oauth(clientId, clientSecret);
patreonOAuthClient.getTokens(oauthGrantCode, redirectURL).then((tokenResponse) => {
console.log(tokenResponse);
})
Token yang saya terima keluar seperti ini:
// 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"
}
Di pelayan tempatan saya, saya sedang cuba menjadikan token segar semula berfungsi supaya saya tidak perlu terus meminta kebenaran pengguna setiap bulan.
Walaupun apabila saya menggunakan kaedah token segar semula saya mendapat 400 Permintaan Tidak Sah:
patreonOAuthClient.refreshToken(tokenResponse).then(response => {
console.log(response, 'success!');
}).catch(err => {
console.log(err, ':(');
});
Ia tidak ditunjukkan dalam dokumentasi npm tetapi anda boleh menemui refreshToken() pada kod sumber github patreon.
Menurut di sini dalam dokumen API mereka:
Jika anda ingin mendapatkan maklumat terkini selepas token telah tamat tempoh, token baru mungkin dikeluarkan untuk digunakan pada bulan berikutnya. Untuk menyegerakkan semula token, buat permintaan POST ke titik akhir token dengan jenis pemberian refresh_token, seperti dalam contoh. Anda juga boleh menyegerakkan semula token secara manual pada klien yang sesuai di halaman klien anda.
Jadi adakah sebab saya mendapat 400 kerana saya perlu menunggu sebulan untuk menyegarkan token atau adakah saya hanya melaksanakan API secara salah? Saya berharap seseorang yang mempunyai lebih banyak pengalaman OAuth dapat memberitahu saya sama ada kita sepatutnya melakukan penyegaran token sama ada sebelum atau selepas token tamat tempoh?
(Jika anda menyegarkannya sebelum ia tamat tempoh, adakah terdapat cara tertentu untuk menetapkan masa pelayan express agar melakukannya sebelum bulan tamat? Kerana saya rasa menambah masa tamat bagi setiap token akan sangat buruk untuk memori).
Jawapan #1
Akhirnya saya berjaya membuat SDK berfungsi.. Saya beranggapan daripada kod sumber bahawa token itu adalah objek yang diterima dari respons. Tetapi ternyata token itu adalah nilai string.
Jadi :
// Using tokenResponse.refresh_token instead of just tokenResponse
patreonOAuthClient.refreshToken(tokenResponse.refresh_token).then(response => {
console.log(response, 'success!');
}).catch(err => {
console.log(err, ':(');
});
