我们可以使用 Power App 中的 Office365Users 连接器获取名为 Employee ID 的 Active Directory 属性

Can we get Active Directory property named Employee ID using Office365Users connector inside Power App

在我们的活动目录中,我们有一个名为“员工 ID”的 属性,如下所示:-

所以在我们的 PowerApp 表单中我想获得这个 属性 的值,但是我检查了 Office365Users 连接器@ https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/connections/connection-office365-users 似乎它不提供这样的数据..那怎么办我可以在我们的 PowerApp 表单中获取员工 ID 属性 吗?此 ID 不同于我们可以使用此公式 Office365Users.MyProfile().Id 获得的 ID,后者将 return 用户的内部 GUID,而不是上面显示的数字。

在此先感谢您的帮助。

我认为您的方案需要使用 Microsoft Graph 来使用继承自 directoryObject. About this item, recommended to view similar trouble in this topic: Get EmployeeID on Powerapps 的 Azure AD 用户帐户对象,其中包含一个示例以在参数中解析电子邮件或 UserPrincipalName 和 returns Active Directory 员工 ID。

目前(截至 2021 年 9 月 27 日),Power Apps 没有开箱即用的连接器可以为您提供 employeeId。原因是我们需要查询 Microsoft Graph 的 beta 版本,因为它不是端点 1.0 版本中的 query-able。有希望,新的Office 365用户连接器有新版本Get my profile (V2) that queries the new version of the Graph interface, and allows us to select employeeId, as well as almost everything else available. The downside is that it returns a GraphUser_V1object。因此,即使 API 调用 returns employeeId,由于 Power Apps 是强类型的,我们不能引用 employeeId,因为它不是 GraphUser_V1 的一部分object.

Power Apps可能无法拉取值,但是Power Automate 可以 .作为入门的 POC:

  1. 在 Power Apps 中,创建一个按钮,其 Action 为 运行 a Power Automate Flow.
  2. 创建名为“GetEmployeeId”的新流程“Power Apps 按钮”。
  3. 在 Power Automate 中,创建一个新步骤:获取我的配置文件 (V2)
    • 高级选项下将Select字段设置为employeeId
  4. 创建一个新步骤:解析 JSON
    • 内容设置为Get my profile (V2)body@{outputs('Get_my_profile_(V2)')?['body']}
    • 架构设置为:
{
    "type": "object",
    "properties": {
        "@@odata.context": {
            "type": "string"
        },
        "@@odata.id": {
            "type": "string"
        },
        "employeeId": {
            "type": "string"
        }
    }
}
  1. 创建新步骤:响应 PowerApp 或流程
  2. 添加输出类型文本
    • 输入标题 : EmployeeId
    • 输入要响应的值@body('Parse_JSON')?['employeeId']
  3. 保存 Power Automate 流程并进行测试。您必须批准 O365 访问权限。整个流程应该是这样的:

  1. 返回 Power Apps,将您的新流程连接到应用。
  2. 将您的 Button1.OnSelect 设置为:Set( varEmployeeID, GetEmployeeId.Run())
  3. 创建一个标签,将 Label1.Text 设置为:varEmployeeID.employeeid
  4. 运行 应用程序并单击按钮进行测试。