我正在尝试使用 Microsoft Graph API 来整理应用程序中的菜单。例如,我有一个链接A,要求用户成为名为 的安全组的一部分graphsec_A。
这是一个 Node 应用程序,因此我调用/me/memberOf并返回一个对象数组,我可以过滤这些对象以查看是否displayNameequals graphsec_A。
如果我直接将用户添加到组中,则当我以这种方式检查时它会起作用。然而,就我而言,我想将整个部门添加到该组中(以及其他一些部门和个人)。当我将组添加到 时graphsec_A,该成员身份不会在 中返回/me/memberOf。
我尝试过摆弄$expand,但我似乎无法让它工作,但显示用户所属的所有组的扩展版本。
有什么方法可以使这项工作无需单独添加每个人?
我有一个守护程序脚本,需要访问我的Office 365收件箱才能阅读消息。目前,我正在将基本身份验证与Outlook Rest API的V1.0一起使用,效果很好,但由于已终止,因此我希望转向Graph API和OAuth 2.0身份验证。客户credentails流,如所描述这里似乎是一个守护进程脚本是最好的选择,但是,我很困惑的权限范围的应用都会有。我在上面链接的文章看起来好像该应用程序可以访问整个组织,但我只需要脚本即可访问我自己的帐户。我不希望我的应用访问其他用户的帐户,并且我认为我们的IT部门也不允许这样做。
那么,使用客户端凭据身份验证时应用程序权限的范围是什么? 如果答案是“整个组织”,那么是否有办法将权限限制为仅我的帐户?如果没有,我还有其他选择吗?
我正在使用图形浏览器 API 来读取我帐户的电子邮件。这个想法是将电子邮件地址和日期间隔传递给图形 API,它应该返回与此电子邮件关联的相同消息。它可能来自已发送的项目,也可能来自收件箱。我正在使用下面的API:
https://graph.microsoft.com/v1.0/me/messages?$Search="Aj****@t**maxa****icas.com
and Sent >= 2018-05-09"
Run Code Online (Sandbox Code Playgroud)
但这是从我的收件箱发送的消息,而不是从发送的电子邮件发送的消息。任何人都可以帮助我吗?谢谢。
我正在使用 Microsoft Graph 中的安全 API 编写一个 Web 应用程序,并且正在使用 Azure AD 进行身份验证,但访问 API 所需的权限需要使用我的应用程序的每个租户的管理员同意。
\n\n如何检查租户管理员是否同意我的应用程序?这样我就知道是将用户发送到常规登录流程还是管理员同意流程。
\n\n是否可以对 Azure AD 进行 REST 调用以获取此信息?我\xe2\x80\x99已经尝试使用oAuth2PermissionGrant ,但这似乎只适用于对象ID,而且我只有我的应用程序/客户端ID。
编辑:
\n\n我对我的应用程序中需要哪些范围感到困惑,但事实证明,当我添加管理员时,仅委派权限,例如SecurityEvents.Read.All应用程序注册门户SecurityEvents.ReadWrite.All,并且仅使用User.Read我的应用程序中的权限来请求用户的基本信息。请求访问令牌时有两种不同的结果;
User.Read范围。User.Read、SecurityEvents.Read.All和SecurityEvents.ReadWrite.All委托范围。即使我的应用程序只请求User.Read.我发现我可以使用它来通过检查访问令牌范围来确定管理员是否同意我的应用程序。如果它包含SecurityEvents.Read.All, 或SecurityEvents.ReadWrite.All那么用户可以继续在应用程序中。但如果这些委派的权限不在范围内,那么我可以提示https://login.microsoftonline.com/common/adminconsent?client_id=<APP ID>&state=12345&redirect_uri=http://localhost/myapp/permissions管理员同意流程请求将权限添加到租户。
谢谢@marc-lafleur,我正在使用管理员帐户来玩oAuth2PermissionGrantGraph Explorer,直到你指出为止,我没有发现先有鸡还是先有蛋的情况。
我想查询我自己的存在和其他用户在团队中的存在.理想情况下,我希望在更改时收到通知,以便我可以更改内部状态.
图API现在似乎没有此功能.
我绞尽脑汁(和其他人)试图让它发挥作用。我正在通过 MS Graph API 拉一张照片 - 这部分工作正常。我能够接收数据(以字节为单位)。但是,我无法将图像正确转换为附加为文件并发布。
我已经阅读了几篇关于 SO 和 GH 的帖子,并尝试了大约 10 种不同的 npm 包和风格(btoa、atob 等......出于绝望),包括来自Graph docs的 JS 示例。没有任何解决方案奏效。npm 包都产生彼此不同的输出,当我拍摄照片并上传到在线 base64 转换器时,它们都与输出不匹配。另外,如果我进行在线转换并将输出字符串直接放入代码中,它就可以工作。
这是我的代码的当前迭代。任何帮助,将不胜感激。
var optionsPhoto = {
url: "https://graph.microsoft.com/v1.0/me/photo/$value",
method: "GET",
headers: {
Authorization: "Bearer " + token
}
};
await request(optionsPhoto, function callback(error, response, body) {
if (!error && response.statusCode == 200) {
photoResponse.data = [
{
"@odata.type": "#microsoft.graph.fileAttachment",
contentBytes: body.split(",").toString("base64"),
contentLocation: "https://graph.microsoft.com/v1.0/me/photo/$value",
isinline: true,
Name: "mypic.jpg"
}
];
photoResponse.ContentType = response.headers["content-type"].toString();
photoResponse.Base64string = (
"data:" …Run Code Online (Sandbox Code Playgroud) 我有一个使用 Azure Active Directory 授权(使用 ADAL)的 Asp.Net 网站,它返回基本属性,例如用户的显示名称。我想要的是使用 Microsoft Graph API(不是 Azure AD API)获取自定义属性(例如,employeeID)
图形 API 查询示例:
string graphRequest = string.Format(CultureInfo.InvariantCulture,
"{0}{1}/users?api-version={2}&$filter=startswith(userPrincipalName, '{3}')",
graphApiEndpoint,
tenant,
graphApiVersion,
"SearchText.Text");
Run Code Online (Sandbox Code Playgroud) 我想使用 GraphClient 向用户添加扩展。我在任何地方都找不到合适的 C# 代码。任何人都可以帮忙吗?
Dictionary<string, object> addData = new Dictionary<string, object> {
{
"HoloFlag",
currentUser.UserPrincipalName
}
};
var extPatchObject = new OpenTypeExtension();
extPatchObject.ExtensionName = "com.holobeam3.extension";
extPatchObject.AdditionalData = addData;
try {
var extension = await _graphClient
.Me
.Extensions
.Request()
.AddAsync(extPatchObject);
Debug.Log(extension);
} catch (Exception ex) {
Debug.Log(ex.Message);
}
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所尝试的。这将返回“访问被拒绝”异常,但在访问用户的现有扩展或其他Me端点时没有问题。
我需要映射所有 SharePoint Online 对象(网站、列表、列表项、附件、文件、文件夹)的权限。这似乎可以通过 CSOM API 实现,但在 Microsoft Graph 中没有找到类似的东西。
以下查询成功检索请求的项目:
https://graph.microsoft.com/beta/sites/root/Lists/{List ID}/items/{item ID}/
Run Code Online (Sandbox Code Playgroud)
但以下查询没有按我的预期返回权限:
https://graph.microsoft.com/beta/sites/root/Lists/{List ID}/items/{item ID}/permissions
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
{
"error": {
"code": "BadRequest",
"message": "Resource not found for the segment 'permissions'.",
"innerError": {
"request-id": "ab9f4cfe-f0e1-433b-9767-96d4b3e58c59",
"date": "2019-03-18T18:52:21"
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下查询也收到相同的错误:
https://graph.microsoft.com/beta/sites/root/Lists/{List ID}/permissions
Run Code Online (Sandbox Code Playgroud)
一年前有人问过非常类似的问题,答案是不可能。
现在可以吗?如果是的话我做错了什么?