Office-js-helpers と Office.context.ui.displayDialogAsync を使用して、Outlook アドインでユーザーを認証しています。ダイアログが正常に開き、IdentityServer4 URL を使用して認証できます (たとえば、redirectUrl window.location.origin を使用した /connect/authenticate)。ただし、アドイン フォルダーに Index.html がない場合、DialogEventReceived ハンドラーで 12002 エラーが発生します。これは、ダイアログが URL を読み込めないことを意味します。アドインのフォルダーに Index.html を追加すると、このエラーは発生しません (例: window.location.origin はhttps://localhost:44352/Index.htmlになります) - しかし、何も起こりません。DialogMessageReceived ハンドルがトリガーされることはありません。office-js の Authenticator.authenticate と displayDialogAsync を使用して、これと同じ動作を得ています。
ダイアログで正常に認証される以下のスニペットを参照してください。ただし、DialogMessageReceived がトリガーされないかエラーになるため、トークン/コードを取得できません。
Office-js-helpers の使用
authenticator.endpoints.add("RM", {
provider: 'RM',
clientId: "MyClientId",
baseUrl: "MyHttpsProtocol://MyDomain.DotCom/MyIdentityServer",
authorizeUrl: "/connect/authorize",
tokenUrl: "MyHttpsProtocol://MyDomain.DotCom/MyIdentityServer/connect/token",
redirectUrl: window.location.origin,
responseType: "code",
state: true,
scope: "openid profile onelist offline_access"
});
authenticator.authenticate('RM', true)
.then(function (token) {
showNotification("Token: " + prettify(token));
})
.catch(function (error) {
showNotification("No Token: " + prettify(error));
});
ダイアログ API の使用
Office.context.ui.displayDialogAsync("MyHttpsProtocol://MyDomain.DotCom/MyIdentityServer/connect/authorize?response_type=code&client_id=MyClientID&redirect_uri=https%3A%2F%2Flocalhost%3A44352&scope=openid%20profile%20MyProfile%20offline_access&state=3364575774",
{ height: 500, width: 500 },
function (asyncResult) {
dialog = asyncResult.value;
dialog.addEventHandler(Office.EventType.DialogMessageReceived, function (args) {
showNotification(prettify(args.message));
dialog.close();
});
dialog.addEventHandler(Office.EventType.DialogEventReceived, function (args) {
showNotification(prettify(args.error));
dialog.close();
});
}
);
助けてください:)何が欠けているか、間違っていますか?