背景:公司做了一款关于企业福利的SaaS应用,需要通过通讯录API获取客户在钉钉上的组织架构及人员信息。
现状:当前实现方式为先获取企业的部门ID,再通过部门ID获取部门下成员的userID,再通过俩ID查部门和人员的详情。
问题:当前实现方式获取的部门ID只有公司下的部门(不包含公司),例如,公司A下面有部门1、部门2、部门3,通过获取部门ID的接口只能拿到部门1、部门2、部门3的ID,所以根据部门ID查出来的员工就只有各自部门下的员工,而不在任何部门,直属于公司A下面的员工就获取不到了。
以上,求解。
要获取企业层级下员工的 userID,可以使用以下方法:
大多数通讯录服务提供商都提供 SDK 或 API,允许第三方应用访问企业通讯录数据,包括员工的 userID。例如:
Google Workspace API
Microsoft Graph API
Slack API
如果你的应用使用 SSO 与通讯录服务集成,则你可以通过 SSO 获取员工的 userID。SSO 会将用户身份验证信息传递给你的应用,其中可能包括 userID。
如果你的应用有权访问通讯录数据库,则你可以直接从数据库中查询员工的 userID。但是,这需要你了解通讯录数据库的架构和查询语言。
作为最后的手段,你可以联系通讯录管理员并请求他们提供企业层级下员工的 userID。
注意:获取员工的 userID 可能需要适当的权限和授权。此外,不同的通讯录服务提供商可能有不同的方法来获取 userID。请参阅相关文档或联系服务提供商以获取更多详细信息。
以下是一些代码示例,展示了如何使用 Google Workspace API 获取企业层级下员工的 userID:
from google.oauth2 import service_account
from googleapiclient.discovery import build
def get_user_ids(organization_id):
"""Gets the user IDs of all employees in an organization.
Args:
organization_id: The ID of the organization.
Returns:
A list of user IDs.
"""
credentials = service_account.Credentials.from_service_account_file(
'service_account.json',
scopes=['https://www.googleapis.com/auth/admin.directory.user']
)
service = build('admin', 'directory_v1', credentials=credentials)
users = service.users().list(
customer='my_customer',
query='organizations:' + organization_id,
fields='nextPageToken, users(id)'
).execute().get('users', [])
user_ids = [user['id'] for user in users]
return user_ids
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。