1

Web リソースとして Dynamics 365 Customer Engagement (以前の CRM) にアップロードされた Reactjs アプリ (別名シングルページ アプリケーション) があります。この Web リソースまたはアプリはエンティティ フォーム内の IFRAME に表示されるため、この小さなアプリは Xrm オブジェクトを使用して Dynamics 365 データに直接アクセスできます。すべて良い。

このアプリで達成しようとしているのは、Microsoft Graph API を介して SharePoint に接続し、ファイルをアップロードしてフォルダーを作成することです。

ユーザーは既に Dynamics 365 と Azure AD にサインインしているため (おそらく)、別のポップアップ ログイン画面をユーザーに表示する必要はありません。

msal wikiにはuserAgentApplication、ユーザーが既にサインインしていてlogin_hintdomain_hint. これら 2 つのパラメーターを渡しましたが、何も起こりません。以下のスニペットで、ログを置いていることに注意してください。componentWillMountbeforeおよびのみ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);
    }
}
4

1 に答える 1