Я разработал веб-часть 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); } });
Наконец я нашел обходной путь с чем-то вроде этого:
var accessTokenRequest = { scopes: ["user.read"], loginHint: preferred_username, extraQueryParameters: {domain_hint: 'organizations'} }
Благословения и спокойной ночи