我编写了一个控制台应用程序,将用于将文件上传到 Office 365 统一组。我正在使用 Microsoft Graph API 获取对组下驱动器的引用,然后上传文件。我正在使用 Microsoft.IdentityModel.Clients.ActiveDirectory NuGet 包进行身份验证。该应用程序需要上传数千个文件,我相信我遇到了一些限制问题。
我能够上传大约 4000 个文件,没有任何问题,但之后我开始收到 401“未经授权”响应。起初我以为这是令牌过期问题,但我更改了代码,以便在遇到 401 时获取全新的令牌。我最初并没有怀疑存在限制问题,因为我没有收到 429 响应错误代码(请参阅:https ://github.com/OfficeDev/microsoft-graph-docs/blob/master/content/overview/errors.md ) 。
是否有可能在一段时间内对 Microsoft Graph API 的请求过多可能会导致 401 未经授权的错误响应消息?
我按顺序发出上传请求(不是并行),并且在每个请求之间添加了 1 秒的暂停。
office365 office365api azure-ad-graph-api microsoft-graph-api
我正在为 Office365/Outlook 编写一个插件。该插件在 Web 服务器上运行,该服务器提供来自第三方系统的信息。我需要确保它仅显示与登录的用户名(或电子邮件地址)相关的信息。我已使用 Microsoft 提供的 PHP 示例代码在我的服务器上成功发送并验证了 Exchange 身份令牌: https://dev .office.com/docs/add-ins/outlook/use-php-to-validate-an-identity-token
我的问题是身份令牌不包含任何用户名或电子邮件地址,我得到的最接近的是“msexchuid”,但我无法理解第三方系统中的数字用户标识符。
在客户端,加载项 javascript 可以通过“Office.context.mailbox.userProfile”获取用户名和电子邮件,但我不只是想将其转发到我的 Web 服务器,因为它可能是伪造的。
有没有办法让身份令牌包含用户名/电子邮件(那就太棒了!),或者是否可以从我的 Web 服务器的服务器端 PHP 脚本根据身份令牌查找更多用户详细信息?
我正在使用他们的 RESTful API 作为文档从 Outlook365 检索日历事件https://msdn.microsoft.com/en-us/office/office365/api/calendar-rest-operations
当事件重复发生时,我没有像世界上所有其他日历那样向我显示 RRULE,而是得到一个像这样的愚蠢对象:
[Recurrence] => Array
(
[Pattern] => Array
(
[Type] => RelativeMonthly
[Interval] => 2
[Month] => 0
[DayOfMonth] => 0
[DaysOfWeek] => Array
(
[0] => Thursday
)
[FirstDayOfWeek] => Sunday
[Index] => Third
)
[Range] => Array
(
[Type] => NoEnd
[StartDate] => 2016-08-18
[EndDate] => 0001-01-01
[RecurrenceTimeZone] => GMT Standard Time
[NumberOfOccurrences] => 0
)
)
Run Code Online (Sandbox Code Playgroud)
我找不到任何关于此的文档或规范。我需要将其转换为 RRULE,但我不知道我可能会得到什么值以及它们的含义。在[pattern][type]上面的例子是RelativeMonthly,我认为这是当事件在某些月份只发生你会得到什么?类型是Monthly每个月发生的时候,我想..??
是否有任何我遗漏的文档来解释从日历 API 返回的重复对象?
或者更好的是已经将这些解析为 RRULE(远景)的 …
如何使用JavaScript API为Office加载项实现“撤消”功能?
现在,用户无法撤消对外接程序所做的所有更改,并且Microsoft似乎没有在以一种简单的方法来使外接程序更改为“可撤消”。即使开发人员一直在要求此功能:
我正在尝试从我们的 Ruby on Rails 应用程序(特别是日历读取 API)访问 Office 365(图形 API)。我们将 omniauth 用于我们的 OAuth2 流,因此,我们还尝试使用omniauth-office365和omniauth-microsoft-office365 gem访问 Graph API 。但是到目前为止,我还没有能够使用这两种宝石获得访问令牌。
我已经在应用程序注册门户中注册了我们的应用程序,但是任何时候我想获得 Calendars.Read 权限(使用范围“profile https://graph.microsoft.com/calendar.read ”),我总是收到错误AADSTS65005: The client application has requested access to resource 'https://graph.windows.net/'. This request has failed because the client has not specified this resource in its requiredResourceAccess list。阅读更多关于此的文章,我觉得我需要真正通过 Azure AD,所以我注册了。但是,我似乎必须在 Azure 仪表板中注册一个全新的 Web 应用程序,该应用程序没有指向先前创建的应用程序的链接。我试了一下,但这只会导致AADSTS70002: Error validating credentials. AADSTS50011: The reply address 'https://example.com/auth/office365/callback?code=AQABA...a_very_long_string&session_state=e1029a3b-f6a5-4e7a-940e-18a21ee4c44f' does not match the reply address 'https://example.com/auth/office365/callback' provided when …
我的用例是:制作一个每小时运行一次的脚本,以提取有关用户日历的信息。
我的脚本在 Python 中运行,我获得了一个令牌,但我无法获得用户的事件。我已在Microsoft 应用程序注册门户中注册了我的应用程序并授予了 Calendar.read 应用程序权限。管理员通过访问/adminconsent端点表示同意。
这是我获取令牌的代码(此处为文档):
url = 'https://login.microsoftonline.com/common/oauth2/v2.0/token'
data = {
'grant_type': 'client_credentials',
'client_id': app_id,
'scope': 'https://graph.microsoft.com/.default', <--- Really not sure about this here
'client_secret': client_secret,
}
r = requests.post(url, data=data)
token = r.json().get('access_token')
Run Code Online (Sandbox Code Playgroud)
我应该使用什么范围?文档只提到了上面的一个。
并阅读用户的日历:
url = 'https://outlook.office.com/api/v2.0/users/{}/events'.format(user_email)
headers = {
'Authorization': 'Bearer {}'.format(token)
}
r = requests.get(url, headers=headers)
Run Code Online (Sandbox Code Playgroud)
我不确定那 users/{user_email}/部分。
我获得了访问令牌,但在尝试读取用户的日历时出现以下错误:
响应 [401]
访问令牌是使用太弱而无法访问此应用程序的身份验证方法获取的。提供的身份验证强度为 1,要求为 2。
卡在这里编写 JS 代码以在自定义 Outlook 加载项中通过 REST 发送电子邮件。
场景如下
report
\
\---- another message (item attachment)
\
\------- attachment (file attachment)
Run Code Online (Sandbox Code Playgroud)
换句话说,我正在发送一条新的报告消息,其中包含另一条消息作为项目附件(工作正常)。
但是现在,问题是,当发送另一条带有附件的消息时,这会失败。打开附加了其他消息的报告不会显示附件。
查询是 POST https://outlook.office365.com/api/v2.0/me/sendmail
已接受退货 202
身体很长,在这个要点上 https://gist.github.com/binarykitchen/2b95331c5c85e7cb4ca6f6917dc67a67
您可以看到 Message has Attachments,其中有一个 Item Attachment(附加另一条消息),其中包含一个名为“bat_kitten.jpeg”的文件附件
为什么这个发送的消息没有这个文件附件,但服务器仍然以接受的 202 响应?
也许有些参数是错误的?不确定要为该文件附件的 ContentId 和 ContentLocation 设置什么?
还是不支持嵌套附件?
任何线索将不胜感激。
我们正在尝试递归地检索文件夹下的所有文件,但我找不到相应的 API。
我尝试过使用不带查询的搜索 API,但这不会返回任何内容。
https://graph.microsoft.com/v1.0/sites/root/drive/root/search(q='{}')
Run Code Online (Sandbox Code Playgroud)
这在微软图表中可能吗?
我们正在进行 Azure AD B2B 集成,其中将实时 ID 帐户添加到 Office 365 租户。
在启动 o-auth 流程时,如果我们指定租户 ID,它不适用于这些来宾用户,但它仅适用于该租户中的普通用户。
具有租户 ID 的初始 o-auth 流请求对于同一用户失败。
但是,对于同一个租户和同一个用户,如果我们不传递租户 ID,它就可以正常工作。
https://login.microsoftonline.com/common/oauth2/authorize?client_id=...
如果传递了租户 ID,我们会收到以下错误。完整的错误详细信息可以在下图中找到。
This login.live.com page can’t be foundNo webpage was found for the web address: https://login.live.com/oauth20_authorize.srf?response_type=code&client_id=51483342-085c-4d86-bf88-cf50c7252078&scope=openid+profile+email+offline_access
Run Code Online (Sandbox Code Playgroud)
我们使用OAuth 2.0 客户端凭据流程进行管理员身份验证。我们正在使用此API来重新生成管理 oauth 令牌。但是,在令牌无效后生成令牌时,用户会收到以下错误。您能就此提出建议吗?
{"error":"unauthorized_client","error_description":"AADSTS7000112: Application 'xxxxxxxxxxxxxxxxxx'(<app-name>) is disabled.\r\nTrace ID: ec4b3557-143a-4020-9651-5cdaf0f83900\r\nCorrelation ID: 97a\r\nTimestamp: 2022-04-28 00:3sdew34fdddddddddd7:47Z","error_codes":[7000112],"timestamp":"2022-04-28 00:37:47Z","trace_id":"ec4b3557-143a-4020-9651-5cdaf0f83900","correlation_id":"9e5ewferferfge753476fergerf97a"}