2

我在基于反应的 SPA 和导入到画布应用程序中的 PCF 组件中使用 MSAL,并且此画布应用程序嵌入到 Dynamic365 现场服务 CRM 中。我创建了一个 Azure AAD 应用程序注册并在单页应用程序中添加了这些 redirectUri

  1. 本地主机:3001
  2. *.crm.dynamics.com/main.aspx //main.aspx 因为我之前提到过这个问题 #190。

所以当我在 localhost:3001 中打开我的应用程序时,它工作正常。它会弹出一个登录窗口,要求登录,并在关闭时给出一个访问令牌作为响应。但在第二种情况下,弹出窗口不会重定向回它的主页,而是在弹出窗口本身中打开。

我在 D365 现场服务中使用的 PCF 组件中使用了这个。

import { PublicClientApplication } from "@azure/msal-browser";

const msalConfig = {
  auth: {
    clientId: 'client_id',
    authority: 'https://login.microsoftonline.com/tanent_id',
    redirectUri: '*.crm.dynamics.com/main.aspx',
  }
};

const msalInstance = new PublicClientApplication(msalConfig);

var loginRequest = {
  responseMode:"query",
  scopes: ["openid", "offline_access", "https://storage.azure.com/user_impersonation"],
};


msalInstance.loginPopup(loginRequest)
  .then(response => {
    console.log(response)
  })
  .catch(err => {
    console.log(err)
  });

复制步骤

  1. 使用上述代码片段创建一个 PCF 组件。
  2. 在画布应用程序中添加此 PCF 组件。
  3. 在 D365 Field Service CRM 中嵌入新创建的画布应用程序。
  4. 当您在此 *.crm.dynamics.com/main.aspx 上运行的 D365 Field Service CRM 中打开 PCF 组件时,它将打开一个登录弹出窗口。我们必须从该弹出窗口登录。
  5. 此弹出窗口不会关闭,而是仅在弹出窗口内打开重定向 URL。 在此处输入图像描述 我已经像这样在 App 注册中添加了重定向 URI 在此处输入图像描述

我已经使用了每个变体,例如 *.crm.dynamics.com/main.aspx 和 *.crm.dynamics.com/ 和 *.crm.dynamics.com。

预期行为

弹出一个登录弹出窗口,在用户登录后弹出窗口自行关闭并且 loginPopup 承诺解决(或拒绝)。

实际行为

弹出一个登录弹出窗口,在用户登录后,弹出窗口重定向回我的站点。

在此处输入图像描述

4

0 回答 0