使用护照和护照 – azure色广告时不会刷新令牌

我试图使用Passport连接到Office365。 我得到auth提示,并返回访问令牌。 问题是刷新标记是未定义的。

我的设置

// In app.js const creds = { redirectUrl: 'http://localhost:3000/token', clientID: '<myClientId>', clientSecret: '<mySecret>', identityMetadata: 'https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration', allowHttpForRedirectUrl: true, // For development only accessType: 'offline', responseType: 'code', validateIssuer: false, // For development only responseMode: 'query', scope: [ 'Contacts.Read', ... ] }; const callback = (iss, sub, profile, accessToken, refreshToken, done) => { console.log('Refresh Token: ', refreshToken); // this is undefined done(null, { profile, accessToken, refreshToken }); }; passport.use(new OIDCStrategy(creds, callback)); // When I authenticate const passportSettings = { accessType: 'offline', approvalPrompt: 'consent' }; // Authentication request. router.get('/login', (req, res, next) => { passport.authenticate('azuread-openidconnect', passportSettings, (err, user, info) => { // Do stuff. }); }); 

我试过的东西:

  • 为我注册的用户取消授权应用程序。
  • 移动accessType设置的位置。

我真的不知道为什么这不起作用。 使用Google策略,只需设置“离线”types就足够了。

看起来您需要将offline_access范围添加到应用程序注册以及configuration中。 见https://github.com/AzureAD/passport-azure-ad/issues/322