Power Apps自定义连接器获取登录用户OAuth Token问题咨询
解决Power Apps中获取登录用户认证令牌并传递给第三方API的问题
你调用的WhoAmI是Dynamics 365的API,它的设计目的是返回当前用户的Dynamics身份信息(用户ID、业务单元ID等),本身不会返回认证令牌(access_token),所以你从响应里拿不到令牌是正常情况。
下面是几种正确获取并传递用户令牌的方案:
方案1:Power Apps直接获取令牌
使用Power Apps内置的PowerApps.GetAccessToken()函数,直接获取当前登录用户针对指定资源的访问令牌:
// 将括号内的字符串替换为你的第三方API对应的资源标识符(通常是API的根URL或Azure AD应用ID URI) Set(userToken, PowerApps.GetAccessToken("https://your-third-party-api-resource")); // 把令牌传给Power Automate流 Test_tokn_All_IMRT.Run(userToken);
注意:需要先在Power Apps的应用设置 > 高级设置中启用「允许直接访问令牌」权限,这个函数才能正常工作。
方案2:Power Automate中获取令牌
在Power Automate流内直接处理令牌获取,不需要Power Apps传递:
- 流的触发器选择「Power Apps」。
- 添加「Azure AD > 获取访问令牌」动作,在「资源」字段填入第三方API的资源标识符。
- 将获取到的令牌作为Authorization头(格式为
Bearer {token}),传入第三方API的HTTP请求动作。 - Power Apps只需调用这个流即可,无需额外传参。
方案3:通过自定义连接器自动传递令牌
如果要用自定义连接器对接第三方API,可配置连接器自动使用当前用户身份认证:
- 编辑自定义连接器,进入「安全」页签。
- 身份验证类型选择「OAuth 2.0」,配置委托权限模式:
- 填入第三方API在Azure AD注册的客户端ID、客户端密钥、授权端点、令牌端点等信息。
- 设置API所需的权限范围。
- 完成配置后,Power Apps调用该自定义连接器时,会自动带上当前用户的认证令牌,无需手动获取和传递。
内容的提问来源于stack exchange,提问作者Mohammed Imran
相关产品推荐
相关产品推荐

