问题描述
我正在尝试使用库 @azure/msal-node
实现与 Microsoft 的登录
我能够使用 authorization_code
流接收访问令牌和 ID 令牌,但无法获得刷新令牌。我还添加了 offline_access
范围。
我找到了一种使用 acquiretokenSilent
解决此问题的方法,但这对我来说也不起作用。
首次登录
const microsoftAuthConfig = {
auth: {
clientId: process.env.MICROSOFT_CLIENT_ID,authority: process.env.MICROSOFT_AUTHORITY,clientSecret: process.env.MICROSOFT_CLIENT_SECRET,},};
const msalClient = new msal.ConfidentialClientApplication(
microsoftAuthConfig
);
const authCodeUrlParameters = {
accesstype: 'offline',responseType: 'code',redirectUri: 'http://localhost:9000/api/auth/microsoft/redirect',state: 'sign in',scopes: [
'user.read','openid','profile','email','Calendars.ReadWrite','offline_access',],prompt: 'select_account',};
msalClient
.getAuthCodeUrl(authCodeUrlParameters)
.then((response) => {
res.status(301).redirect(response);
})
.catch((error) => console.log(JSON.stringify(error)));
if (req.query.code) {
const tokenRequest = {
code: req.query.code,accesstype: 'offline',grantType: 'authorization_code',scopes: [
'user.read',};
msalClient
.acquiretokenByCode(tokenRequest)
.then((response) => {
console.log('\nResponse: \n:',response);
res.cookie('auth-microsoft',response.idToken,{
httpOnly: true,});
return res.status(301).redirect('http://localhost:3000');
})
.catch((error) => {
console.log(error);
// res.status(500).send(error);
});
}
在此之后,我获得了访问令牌和 ID 令牌,但没有获得刷新令牌。
任何帮助将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)