Почему я получаю пустой токен доступа от 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

Для получения дополнительной информации перейдите по ссылкам ниже:-

Другие вопросы по тегам