我需要发现用户的租户名称,因为服务端点resourceId我将使用Azure服务,要求我指定租户名称:
服务端点: https:// [tenantnamme] .api.crm.dynamics.com / ...
资源ID: https:// [tenantname] .crm.dynamics.com
我希望Unified Microsoft Graph API可以为我发现这一点.我查看了文档,我能看到的最接近的是使用graph.microsoft.com/v1.0/organization,它会返回给我:verifiedDomains:[...."name":"contoso.onmicrosoft.com"]
但是,我不确定这是否是正确的方法.如果组织有多个经过验证的域名怎么办?验证的域名是否与租户名称相同?
更新:这是我的真实场景.我有一个Web应用程序,允许用户通过OAuth2对Azure AD进行身份验证.从OAuth交互中获取刷新令牌和访问令牌没有问题.但是,在使用其他服务的其他服务中,它在服务端点需要[azure-ad-tenant-name].这是我的问题.
我正在根据组织 ID 列表查找组织成员。每个组织都有一个分页的成员列表,带有endCursor. 由于每个endCursor都不同,并且每个组织都有不同数量的成员(和不同数量的页面),我如何将不同的游标作为变量传回?如果是这样,每个游标如何与上一个查询中的组织 ID 相关联?
query($orgIds:[ID!]!, $page_cursor:String) { // not sure how to pass in the cursor when different length lists are returned
nodes(ids:$orgIds) {
... on Organization {
id
members(first: 100, after: $page_cursor) {
edges {
node {
id
}
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了http://graphql.org/learn/pagination/,但我没有看到任何与为同一个边列表传递多个游标相关的内容。
我正在使用 MS 图形端点集成 OneNote 应用程序。为了对用户进行身份验证,我使用 azure v2.0 端点。microsoft graph platform、onenote 和 azure 提供的测试/沙箱环境是否相同。
目前我使用的端点如下 -
获取 onenote 笔记本 - https://graph.microsoft.com/v1.0/me/onenote/notebooks
使用 Azure v2.0 对用户进行身份验证 - https://login.microsoftonline.com/common/oauth2/v2.0/authorize https://login.microsoftonline.com/common/oauth2/v2.0/token
这些端点适用于所有环境,包括开发/生产/测试。我们在https://apps.dev.microsoft.com/注册的应用程序类型是否重要?
我一直在调查如何使用Microsoft Graph API(nuget上可用的dotnet/C#库)从Azure AD组添加(以及稍后删除)用户.
忽略所有其他的连接GraphServiceClient等等.我正在尝试与下面的示例非常相似的代码,没有得到任何异常(建议事情很好)但是当我再次通过API获得该组时,它仍然没有任何成员!
有趣的是(作为旁白),当我memberOf在user对象上请求属性并告诉它扩展它时,它仍然返回null.
var user = await client.Users[userPrincipalName]
.Request()
.Select("id,memberOf")
.Expand("memberOf")
.GetAsync();
var group = await client.Groups[groupId]
.Request()
.Select("members")
.Expand("members")
.GetAsync();
group.Members.Add(user);
await client.Groups[groupId].Request().UpdateAsync(group);
// userPrincipalName => "test.user@mytenant.com"
// groupId => the object GUID for the group
Run Code Online (Sandbox Code Playgroud)
有谁知道我在这里做错了什么?我用来提供此代码的文档基于以下文档的链接:
此外,我尝试在此处建议的解决方案上设置方法,为用户设置许可证:
像往常一样,谢谢你的帮助.
彼得
额外
我也尝试在图API中寻找可能更新.Members属性/资源而不是组本身:
await client.Groups[groupId].Members.Request(). // <-- Only has GetAsync()
Run Code Online (Sandbox Code Playgroud)
但它只有GetAync()可用的方法.
根据答案更新
var usersGroups = await client.Users[userPrincipalName].MemberOf.Request().GetAsync();
if (!usersGroups.Any(g …Run Code Online (Sandbox Code Playgroud) 我尝试使用 API https://dev.onedrive.com/getting-started.htm与 OneDrive 集成
我使身份验证工作,我可以获得帐户中的驱动器列表。当我执行 API 调用 /me/drives 时,我得到了很好的驱动器列表。
但是我找不到如何获取驱动器上的文件夹列表、文件夹的子文件夹等。
从文档中我可以看到有一些 API,但它对我不起作用。 https://dev.onedrive.com/items/list.htm
我必须执行。
GET /drive/items/{item-id}/children
GET /drive/root:/{item-path}:/children
Run Code Online (Sandbox Code Playgroud)
但它不起作用。我有一个驱动器列表中的驱动器 ID。当我执行 GET /drive/items/DRIVEID/children 时出现错误“拒绝访问。您无权执行此操作或访问此资源。”
这个操作怎么做?我应该使用驱动器 ID 还是名称?也许 url 是错误的,如果我有驱动器名称和 ID,那么正确的 url 必须是什么?