标签: office365api

Microsoft Graph API 潜在限制

我编写了一个控制台应用程序,将用于将文件上传到 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

5
推荐指数
1
解决办法
1197
查看次数

如何从 Exchange 身份令牌获取用户名?

我正在为 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 脚本根据身份令牌查找更多用户详细信息?

outlook-addin office365api

5
推荐指数
1
解决办法
2304
查看次数

Outlook 日历 REST API 重复对象

我正在使用他们的 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(远景)的 …

php outlook recurrence exchange-server office365api

5
推荐指数
1
解决办法
1074
查看次数

如何使用JavaScript API为Office加载项实现“撤消”功能

如何使用JavaScript API为Office加载项实现“撤消”功能?

现在,用户无法撤消对外接程序所做的所有更改,并且Microsoft似乎没有在以一种简单的方法来使外接程序更改为“可撤消”。即使开发人员一直在要求此功能:

office365 office365-apps office365api office-js

5
推荐指数
1
解决办法
378
查看次数

如何正确注册和访问 OAuth2 的 Office 365 Graph API(使用来自 Ruby 的 omniauth)?

我正在尝试从我们的 Ruby on Rails 应用程序(特别是日历读取 API)访问 Office 365(图形 API)。我们将 omniauth 用于我们的 OAuth2 流,因此,我们还尝试使用omn​​iauth-office365omn​​iauth-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 …

ruby-on-rails omniauth office365 office365api

5
推荐指数
1
解决办法
1612
查看次数

Outlook 365 api 中的身份验证

我的用例是:制作一个每小时运行一次的脚本,以提取有关用户日历的信息。

我的脚本在 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。

python oauth-2.0 outlook-restapi office365api

5
推荐指数
1
解决办法
1万
查看次数

如何发送嵌套附件?

卡在这里编写 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 设置什么?

还是不支持嵌套附件?

任何线索将不胜感激。

outlook-restapi office365api office-js microsoft-graph-api

5
推荐指数
0
解决办法
372
查看次数

在microsoft graph中递归列出所有文件

我们正在尝试递归地检索文件夹下的所有文件,但我找不到相应的 API。

我尝试过使用不带查询的搜索 API,但这不会返回任何内容。

https://graph.microsoft.com/v1.0/sites/root/drive/root/search(q='{}')
Run Code Online (Sandbox Code Playgroud)

这在微软图表中可能吗?

sharepoint-online onedrive office365api microsoft-graph-api

5
推荐指数
1
解决办法
5399
查看次数

如果在 B2B 场景中的 o-Auth 流期间传递租户 ID,则添加到 Azure AD 的来宾(真实帐户)将无法登录

我们正在进行 Azure AD B2B 集成,其中将实时 ID 帐户添加到 Office 365 租户。

在启动 o-auth 流程时,如果我们指定租户 ID,它不适用于这些来宾用户,但它仅适用于该租户中的普通用户。

具有租户 ID 的初始 o-auth 流请求对于同一用户失败。

https://login.microsoftonline.com/c7105dda-a548-4def-8ee7-e992e0e6dcb0/oauth2/authorize?client_id=.....

但是,对于同一个租户和同一个用户,如果我们不传递租户 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)

在此处输入图片说明

adal office365api

5
推荐指数
0
解决办法
71
查看次数

在 OAuth 2.0 客户端凭据流程中重新生成新的 Microsoft 令牌时出现“unauthorized_client”错误

我们使用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"}

outlook office365 office365api microsoft-graph-api

5
推荐指数
1
解决办法
429
查看次数