Я понял это благодаря комментарию @griFlo
. После того, как я получил токен доступа из процесса аутентификации, мне пришлось использовать это и все, что было сгенерировано, для вызова API, который я хотел, что я и сделал, используя обещание запроса из модуля request-promise
внутри стратегии.
Сначала установите модуль, используя npm i request-promise
, и установите модуль на верхнюю часть вашего приложения. Код должен выглядеть следующим образом:
//other defines
...
const request = require('request-promise');
passport.use(
new GoogleStrategy({
// options for google strategy
clientID: keys.google.clientID,
clientSecret: keys.google.clientSecret,
callbackURL:'<callback url>'
}, (accessToken, refreshToken, profile, done) => {
User.findOne({googleId: profile.id}).then((currentUser) => {
if (currentUser){
// check user
done(null, currentUser);
} else {
//call fitness api
url = keys.google.fitnessUrl;
request.get(url).auth(null, null, true, accessToken)
.then(res=> {
new User({
googleId: profile.id,
....
activity: res
}
).save().then((newUser) => {
done(null, newUser);
});
});
}
});
}));
Важная часть находится в части обещания mongoose, где вы проверяете пользователя перед вызовом API, чтобы вы могли добавить извлеченные данные в предопределенную схему и сохранить ее. .