我在基于反应的 SPA 和导入到画布应用程序中的 PCF 组件中使用 MSAL,并且此画布应用程序嵌入到 Dynamic365 现场服务 CRM 中。我创建了一个 Azure AAD 应用程序注册并在单页应用程序中添加了这些 redirectUri
- 本地主机:3001
- *.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)
});
复制步骤
- 使用上述代码片段创建一个 PCF 组件。
- 在画布应用程序中添加此 PCF 组件。
- 在 D365 Field Service CRM 中嵌入新创建的画布应用程序。
- 当您在此 *.crm.dynamics.com/main.aspx 上运行的 D365 Field Service CRM 中打开 PCF 组件时,它将打开一个登录弹出窗口。我们必须从该弹出窗口登录。
- 此弹出窗口不会关闭,而是仅在弹出窗口内打开重定向 URL。 我已经像这样在 App 注册中添加了重定向 URI
我已经使用了每个变体,例如 *.crm.dynamics.com/main.aspx 和 *.crm.dynamics.com/ 和 *.crm.dynamics.com。
预期行为
弹出一个登录弹出窗口,在用户登录后弹出窗口自行关闭并且 loginPopup 承诺解决(或拒绝)。
实际行为
弹出一个登录弹出窗口,在用户登录后,弹出窗口重定向回我的站点。