Я регистрирую пользователей через свои доменные учетные записи Google, используя passport.js. Это прекрасно работает, но теперь мне нужно дать этому приложению доступ к нескольким API Google (диск, листы и т. Д.).
Когда пользователь входит в систему, в журналах появляется сообщение, из-за которого создается впечатление, что в паспорте есть вся необходимая информация:
info: [06/Jun/2019:21:24:37 +0000] "302 GET /auth/callback?code=** USER ACCESS TOKEN HERE **&scope=email%20profile%20https://www.googleapis.com/auth/drive.file%20https://www.googleapis.com/auth/spreadsheets%20https://www.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/userinfo.profile%20https://www.googleapis.com/auth/drive HTTP/1.1" [46]
Это достигается путем передачи добавленных областей через passport.authenticate (), который предоставляет пользователю «Предоставить доступ к этим вещам из вашей учетной записи Google в это приложение?» экран:
//Initial auth call to Google
router.get('/',
passport.authenticate('google', {
hd: 'edmonds.wednet.edu',
scope: [
'email',
'profile',
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/spreadsheets'
],
prompt: 'select_account'
})
);
Однако, когда я иду и пытаюсь вызвать API с чем-то вроде:
const {google} = require('googleapis');
const sheets = google.sheets({version: 'v4', auth});
router.post('/gsCreate', function(req,res,next){
sheets.spreadsheets.create({
// Details here.....
});
});
Я не получаю ничего, кроме ошибок (текущий debug: authClient.request is not a function
)
У меня такой вопрос: могу ли я использовать такую настройку, попросив пользователя войти в систему и предоставить разрешения один раз, а затем каким-то образом сохранить это в своем сеансе пользователя через паспорт?