Actualmente, tengo un flujo Oauth2 para una API. El código funciona, pero no creo que esté funcionando como debería.
const OAuth2Strategy = require('passport-oauth2'); passport.use(new OAuth2Strategy({ authorizationURL: authorizationURL, tokenURL: tokenURL, clientID: clientId, clientSecret: clientSecret, callbackURL: callbackURL, }, function(accessToken, refreshToken, results, profile, callback) { return callback(null, results); })) app.get('/auth/api', passport.authenticate('oauth2', {failureRedirect: '/fail', successRedirect: '/', scope: ['profile']})); Me las arreglé para obtener un accestoken de acceso, un token de refreshtoken y results en la función de devolución de llamada, sin embargo, se están produciendo problemas menores. La primera es que el perfil devuelve un objeto vacío {} . No creo que el pasaporte pueda hacer nada al respecto debido a que la estrategia no es nativa de la API. El otro problema es que los results devuelven el token de acceso y su vencimiento, pero no devuelven el token de actualización en los resultados. Lo que no entiendo es que el refreshtoken devolución de llamada del token de actualización está devolviendo el token de actualización, pero el resultado no lo contiene.
Lo que espero recibir de acuerdo con la documentación de la API es:
{ access_token: "...", expires_in: 300, refresh_expires_in: 1800, refresh_token: "...", token_type: "bearer", 'not-before-policy': 0, scope: "profile" }pero lo que obtengo es:
{ access_token: '...', expires_in: 900, refresh_expires_in: 0, token_type: 'Bearer', 'not-before-policy': 0, scope: 'offline_access email profile' } Podría fusionar el refreshtoken de actualización y los results , pero si este es el resultado actual, seguramente estoy haciendo algo mal. ¿Tiene esto que ver con la estrategia que estoy usando?
Según los documentos, la devolución de llamada recibe solo cuatro parámetros:
function(accessToken, refreshToken, profile, cb) { ... } No hay parámetro de results . Aún así, puede pasar a su devolución de llamada ( cb en el código anterior) cualquier cosa que desee de las cosas que recibió en la devolución de llamada del pasaporte. Si tiene el token de actualización en el parámetro refreshToken , simplemente páselo a su cb si lo necesita allí.