sid*_*hah 8 c# microsoft-graph-api
我想将用户添加到组中,但我没有用户的id,我只有电子邮件地址。
这是代码:
User userToAdd = await graphClient
.Users["objectID"]
.Request()
.GetAsync();
await graphClient
.Groups["groupObjectID"]
.Members
.References
.Request()
.AddAsync(userToAdd);
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我如何使用 Microsoft Graph 从电子邮件地址检索 ObjectId(用户 ID)?
Mar*_*eur 12
您可以通过几种不同的方式查找用户。
从/users端点,您可以使用他们的id(分配给每个帐户的 GUID)或他们的userPrincipalName(默认域的电子邮件别名):
// Retrieve a user by id
var user = await graphClient
.Users["00000000-0000-0000-0000-000000000000"]
.Request()
.GetAsync();
// Retrieve a user by userPrincipalName
var user = await graphClient
.Users["user@tenant.onmicrosoft.com"]
.Request()
.GetAsync();
Run Code Online (Sandbox Code Playgroud)
如果您使用授权代码或隐式OAuth 授权,您还可以查找通过/me端点进行身份验证的用户:
var user = await graphClient
.Me
.Request()
.GetAsync();
Run Code Online (Sandbox Code Playgroud)
小智 12
除了上面这些正确答案之外。
userPrincipalName或者id不是外部电子邮件地址。这是我手动完成注册时的情况。您可以使用此过滤器:
var user = await _graphClient.Users
.Request()
.Filter($"identities/any(c:c/issuerAssignedId eq '{email}' and c/issuer eq 'contoso.onmicrosoft.com')")
.GetAsync();
Run Code Online (Sandbox Code Playgroud)
源代码: https: //learn.microsoft.com/en-us/graph/api/user-list? view=graph-rest-1.0&tabs=csharp
使用此配置创建用户:
Microsoft.Graph.User graphUser = new Microsoft.Graph.User
{
AccountEnabled = true,
PasswordPolicies = "DisablePasswordExpiration,DisableStrongPassword",
PasswordProfile = new PasswordProfile
{
ForceChangePasswordNextSignIn = false,
Password = accountModel.Password,
},
Identities = new List<ObjectIdentity>
{
new ObjectIdentity()
{
SignInType = "emailAddress",
Issuer ="contoso.onmicrosoft.com",
IssuerAssignedId = email
}
},
};
Run Code Online (Sandbox Code Playgroud)
您可以使用id或userPrincipalName(这是电子邮件地址)从 Graph API 检索用户的详细信息。
GET /users/{id | userPrincipalName}
Run Code Online (Sandbox Code Playgroud)
您是否尝试过使用电子邮件地址作为objectID?