You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

访问Dynamics CRM API时个人账号登录失败,已做配置仍未解决

问题描述

访问Dynamics CRM API时触发错误:

"You can't sign in here with a personal account. Use your work or school account instead"

已尝试的操作:

  • 设置应用支持的账号类型为「所有Microsoft账户用户」
  • 在Manifest中修改配置:
    "allowPublicClient": true,
    "signInAudience": "AzureADandPersonalMicrosoftAccount"
    
  • 完成权限的管理员同意

当前使用的认证代码:

#region Authentication

var authBuilder = PublicClientApplicationBuilder.Create(clientId)
                 .WithAuthority(AadAuthorityAudience.AzureAdMultipleOrgs)
                 .WithRedirectUri(redirectUri)
                 .Build();
var scope = resource + "/.default";
string[] scopes = { scope };

AuthenticationResult token =
    authBuilder.AcquireTokenInteractive(scopes).ExecuteAsync().Result;
#endregion Authentication

解决步骤

1. 修正认证Authority配置

当前代码里的AadAuthorityAudience.AzureAdMultipleOrgs仅适配Azure AD工作/学校账户,不包含个人Microsoft账户。需要将Authority切换为支持全类型Microsoft账户的参数:

var authBuilder = PublicClientApplicationBuilder.Create(clientId)
                 .WithAuthority(AadAuthorityAudience.AzureAdAndPersonalMicrosoftAccount)
                 .WithRedirectUri(redirectUri)
                 .Build();

2. 确认Dynamics CRM API的环境兼容性

注意:Dynamics CRM(即Dataverse)商业版环境默认仅支持工作/学校账户访问。如果要使用个人账户,需确保目标环境是Power Apps个人环境,同时权限配置需对应个人环境的API权限。

3. 验证权限范围正确性

确认resource变量指向正确的Dataverse环境URL(例如https://yourorg.crm.dynamics.com),/.default范围表示调用应用已配置的所有静态权限,该配置是正确的。

4. 清理缓存后重新测试

清除本地令牌缓存(可通过删除应用缓存文件,或调用authBuilder.RemoveAsync(account)移除已缓存账户),避免旧配置或错误令牌干扰认证流程。

内容的提问来源于stack exchange,提问作者drdarkfrancis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:00:58