Почему я получаю пустой токен доступа от azure b2c с помощью vuejs 3
Я использую последнюю версию MSAL.js (@azure/msal-browser": "^2.23.0"), я могу успешно выполнить аутентификацию, но токен доступа пуст. Не знаю почему. Я публикую код здесь Надеюсь, кто-нибудь может помочь, пожалуйста?
export const useAuthUserStore = defineStore("auth_user", {
state: () => ({
msalConfig: {
auth: {
clientId: "xxx",
authority: xxxxxxxx,
knownAuthorities: [xxxxxxx.onmicrosoft.com],
redirectUri: http://localhost:8080/
},
cache: {
cacheLocation: 'localStorage',
},
},
accessToken: "",
isAuthenticated:false,
}),
получить метод доступа к токену:
async getAccessToken(){
let request = {
scopes: [https://graph.microsoft.com/offline_access,https://graph.microsoft.com/openid],
// scopes: ['openid', 'offline_access' ],
extraScopesToConsent:['<tenant>.onmicrosoft.com/api/read']
};
const msalInstance = new PublicClientApplication(
this.authStore.$state.msalConfig
);
try {
let tokenResponse = await msalInstance.acquireTokenSilent({
account: this.account ,
scopes: [https://graph.microsoft.com/offline_access,https://graph.microsoft.com/openid]
});
console.log('tokenResponse :',tokenResponse)
return tokenResponse
} catch (error) {
console.error( 'Silent token acquisition failed. Using interactive mode',error );
let tokenResponse = await msalInstance.acquireTokenPopup(request);
console.log(`Access token acquired via interactive auth ${tokenResponse.accessToken}`)
}
},
handleResponse(response) {
console.log('handleResponse.......')
let accountId = "";
const loginRequest = {
scopes: [https://graph.microsoft.com/offline_access,https://graph.microsoft.com/openid],
}
console.log('handleResponse.......',response)
if (response !== null) {
accountId = response.account.homeAccountId;
console.log(accountId)
// Display signed-in user content, call API, etc.
} else {
// In case multiple accounts exist, you can select
const currentAccounts = this.$msalInstance.getAllAccounts();
if (currentAccounts.length === 0) {
// no accounts signed-in, attempt to sign a user in
this.$msalInstance.loginRedirect(loginRequest);
} else if (currentAccounts.length > 1) {
// console.log('handleResponse.......96')
// Add choose account code here
} else if (currentAccounts.length === 1) {
// console.log('handleResponse.......23')
accountId = currentAccounts[0].homeAccountId;
// console.log('handleResponse 111.......',accountId)
}
}
}
результат: введите описание изображения здесь
не могли бы вы помочь, пожалуйста? есть ли недостающий код, который я должен добавить?
1 ответ
С помощью методов AcquireToken, предоставляемых MSAL, вы можете получать маркеры доступа для API, которые необходимо вызывать вашему приложению.
Исходный код: пример GitHub
Для получения дополнительной информации перейдите по ссылкам ниже:-