У меня есть приложение Reactjs (так называемое одностраничное приложение), которое загружено в Dynamics 365 Customer Engagement (ранее CRM) в качестве веб-ресурса.Этот веб-ресурс или приложение отображается в виде IFRAME внутри формы объекта, и поэтому это небольшое приложение уже имеет прямой доступ к данным Dynamics 365 с помощью объекта Xrm.Все хорошо.
То, что я пытаюсь сделать с этим приложением, - это заставить его подключаться к SharePoint через Microsoft Graph API, загружать файлы и создавать папки.
Поскольку пользователь уже подписанв Dynamics 365 и Azure AD (я полагаю) нет необходимости отображать другой всплывающий экран входа в систему для пользователя.
В msal wiki есть 2 дополнительных параметра, которые можно передать в userAgentApplication
, чтобы сообщить AAD, что пользователь уже выполнил вход, и это login_hint
и domain_hint
,Я передал эти два параметра, но ничего не происходит.Обратите внимание на фрагмент ниже, что я положил логи.В консоли регистрируются только componentWillMount
, before
и after
.
Не уверен, что здесь не хватает.
componentWillMount() {
console.log('componentWillMount');
try {
console.log('before');
var userAgentApplication = new UserAgentApplication(applicationConfig.clientID, applicationConfig.authority, function (errorDesc, token, error, tokenType) {
// Called after loginRedirect or acquireTokenPopup
console.log('callback called');
}, {cacheLocation: 'localStorage'});
userAgentApplication.acquireTokenSilent(["user.read"], null, null, "&login_hint=first.last@mydomain.cp,&domain_hint=mydomain.com")
.then(token => console.log('token', token))
.catch((err) => console.log('err', err));
userAgentApplication.acquireTokenSilent(["user.read"], "&login_hint=first.last@mydomain.cp,&domain_hint=mydomain.com")
.then(token => console.log('token', token))
.catch((err) => console.log('err', err));
console.log('after');
}
catch (e) {
console.log('caught error: ', e);
}
}