Как получить accessToken с использованием библиотеки MSAL внутри веб-части Sharepoint? - PullRequest
0 голосов
/ 26 марта 2020

Я разработал веб-часть Sharepoint, в которой мне нужно получить accessToken. Для получения токена я использовал библиотеку MSAL.

Моя проблема заключается в следующем: я вошел в мою Sharepoint, но когда веб-часть пытается получить accessToken, что-то не удается в аутентификации и появляется эта ошибка:

xxxx-web- part. js: 1838 ClientAuthError: Требуется логин пользователя. в ClientAuthError.AuthError [как конструктор] (https://localhost: 4321 / dist / xxx-web-часть. js: 2057: 28 ) в новом ClientAuthError (https://localhost: 4321 / dist / xxxx-web-part. js: 630: 28 ) в Function.7ZR7.ClientAuthError.createUserLoginRequiredError (https://localhost: 4321 / dist / xxxx-web-part. js: 682 : 16 ) в https://localhost: 4321 / dist / xxx-web-part. js: 2916: 103 в новом Promise () в UserAgentApplication.ZES5.UserAgentApplication.acquireTokenSilent (https://localhost: 4321 / dist / xxxx-web-part. js: 2905: 16 ) в UserAgentApplication.descriptor.value [as acquTokenSilent] (https://localhost: 4321 / dist / xxxx- веб-часть. js: 2543: 38 ) по адресу xxxWebPart.PlTk.xxxxWebPart.render (https://localhost: 4321 / dist / xxxx-web-часть. js: 1828: 19 ) в xxxxWebPart.t._renderWithAccessibleTitle (https://spoprod-a.akamaihd.net/files/sp-client/sp-webpart-workbench-assembly_en-us_27e01b6941bf5cdddecc695bd3bdbb95.js: 21: 585834 ) в https://spoprod-a.akamaihd.net/files/sp-client/sp-webpart-workbench-assembly_en-us_27e01b6941bf5cdddecc695bd3bdbb95.js: 21: 585352

Как решить эту проблему ?. Я хотел бы, чтобы, если я вошел в Sharepoint, получил accessToken без повторной регистрации в системе.

Это мой код:

export default class MyWebPart extends BaseClientSideWebPart <IWebpartProps> {

  public render(): void {

  const config = {
      auth: {
          clientId: "xxxxxxxxxxxxxxx",
          authority: "https://login.microsoftonline.com/yyyyyyyyyyyyyyyyyyy"
      }
  };

  const myMSALObj = new UserAgentApplication(config);

  let accessTokenRequest = {
      scopes: ["user.read"]
  }

  myMSALObj.acquireTokenSilent(accessTokenRequest).then(function(accessTokenResponse) {
      // Acquire token silent success
      // call API with token
      let accessToken = accessTokenResponse.accessToken;
      let scopes = accessTokenResponse.scopes;
  }).catch(function (error) {
          //Acquire token silent failure, and send an interactive request
          console.log(error);
          if (error.errorMessage.indexOf("interaction_required") !== -1) {
              myMSALObj.acquireTokenRedirect(accessTokenRequest);
          }
  });

1 Ответ

0 голосов
/ 26 марта 2020

Наконец я нашел обходной путь с чем-то вроде этого:

var accessTokenRequest = {
   scopes: ["user.read"],
   loginHint: preferred_username,
   extraQueryParameters: {domain_hint: 'organizations'}
}

Благословения и спокойной ночи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...