我正在开发一个需要从Outlook.com和Office 365检索和编辑日历事件的应用程序.我看到有两个选项:
他们似乎有几乎相同的界面.我看到Outlook REST API支持通知(webhooks),Microsoft图形不支持?那么选择哪一个,有哪些优点/缺点以及为什么有2个api?
我正在尝试构建一个可以访问组织的所有日历(用户,房间等)的应用程序.
目前,我的身份验证流程将代表租户用户登录,并使用刷新令牌来访问所需的资源.我一提出要求:
https://outlook.office365.com/api/v1.0/users/{room-resource@email}/events
Run Code Online (Sandbox Code Playgroud)
我的申请回复了 401
从我的收集来看,似乎这个流程仅限于单个用户的范围.虽然租户管理员应该有权查看任何房间资源,但该房间在技术上是用户本身,因此API将以禁止的错误进行响应.现在似乎正确的流程是租户管理员必须使用新的服务OAuth流授予我的应用程序权限.
通过阅读这篇文章,似乎API正在使用OAuth 客户端凭据授权类型(仅限应用程序令牌).而不是使用/oauth/common
端点我现在必须使用/oauth/tenant-id
我可以通过code+id_token
响应类型中返回的JWT令牌检索.这导致了我的第一个问题:
使用OpenID流程是最初检索租户ID的唯一方法吗?
接下来是对我来说有点模糊的地方.
我们现在必须生成X.509 SSL证书并将指纹/值上传到我们的Azure应用程序清单.很容易.
然后根据Office 365 Rest API中的讨论- 守护进程周认证,我们构建一个特定的JWT,base64对其进行编码,并使用我们的证书进行签名.
我实际上没有完成最后几步,但我会在可以的时候发布我的结果.我只是确保我似乎正在遵循正在尝试访问的资源的正确程序.我知道服务令牌是一个相当新的功能,不幸的是我必须找到在Stackoverflow上发送已签名的JWT的流程,而不是官方的MSFT文档......
我还注意到,由于我们正在使用客户端凭据流,因此我们不会refresh_token
在响应中收到.对于我的最后一个问题:
当访问不同的资源(即Graph API/Office365 API)时,我是否只使用签名请求为每个资源获取不同的访问令牌,而不是使用刷新令牌来获取多个资源?
如果我似乎正在进行的总体方向是正确的,请告诉我!任何帮助是极大的赞赏.
向发出PATCH
请求时,图表api出现错误https://graph.microsoft.com/v1.0/me/calendars/$(CALENDAR_ID)/events/$(EVENT_ID)
。
这是已经进行了一段时间的集成,而我们之前从未见过。这是API,停机时间还是我们应该处理的错误?这是一个示例响应:
HTTP 401
{
"error": {
"code": "PopAuthenticatorInvalidSignature",
"message": "Signature is invalid for pop authenticator.",
"innerError": {
"date": "2019-09-25T18:33:37",
"request-id": "1383b020-6ba0-44db-85b8-03cfbf277cd3"
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是其他请求ID:
0c2a47da-1090-4c06-b5cb-fc95b3964913
7403116f-3edd-4d39-adf9-51ed2feaee23
27df39b8-43ad-41f8-b9f1-b5e2adaafb4b
408c8686-bf78-4a82-883a-7e794838d846
7130b609-1a0a-46f2-b523-0db1db591fe1
9659a797-180f-4f41-bba0-b1b490408752
161ea8d8-dcf5-4f0d-aa21-32b584e22ba6
Run Code Online (Sandbox Code Playgroud)
如果需要,很乐意提供其他信息。
HI有人请在调用outlook rest api时帮助我注意以下错误
IDX21323:RequireNonce为'[PII默认隐藏.将IdentityModelEventSource.cs中的'ShowPII'标志设置为true以显示它.]'.OpenIdConnectProtocolValidationContext.Nonce为null,OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce不为null.nonce无法验证.如果您不需要检查nonce,请将OpenIdConnectProtocolValidator.RequireNonce设置为"false".请注意,如果找到"nonce",则会对其进行评估.
我有一个关于Office365 REST API的问题.有没有办法获得资源列表 - 会议室日历.
如果我知道会议室用户名,我只能在会议室举行会议.
https://outlook.office365.com/api/v1.0/users/room1@xxxx.onmicrosoft.com/calendars
我可以列出所有会议室并获取他们的日历吗?
我试图通过Windows窗体应用程序从我的O365邮箱中读取电子邮件.我希望我的应用程序使用我的用户名和密码从O365邮箱中读取电子邮件.是否可以在Azure上注册应用程序的情况下访问O365 api?(仅使用用户凭据)
我在msdn,https: //msdn.microsoft.com/en-us/library/office/dn567668( v= exchg.150).aspx上关注了这篇文章. 我在这行中有一个问题:
result = context.AcquireToken(resourceId, ClientID, _returnUri); // parameters are no longer valid in this method
Run Code Online (Sandbox Code Playgroud) 使用Office 365 API,我们希望允许用户查看会议室日历,并根据Office 365中的权限为事件保留这些日历.
我理解使用服务应用程序可以获得管理员同意,但这对我们所有的用例都不可能.我们需要使用用户的实际权限,而不是在后台使用管理员权限绕过它们.
基于我也明白这个问题,并且这个问题,这是不可能这样做使用前的Office 365 API.
我的问题是现在是否可以使用新的MS Graph API以及1.0版是否可以稳定用于生产用途.如果没有,是否计划得到支持,何时支持?
谢谢!
我正在开发基于Outlook-SDK-Android的Android应用程序.该应用程序与Outlook Calendar REST API进行对话,以检索,预订和删除事件(请参阅此处和此处的代码示例).现在我需要阅读其他人的日历,并且我已经向其他用户提供了具有委托访问权限(作者权限级别)的Office365帐户.
我已使用新门户网站上提供的帐户注册了我的应用.在我的应用程序中,我使用范围" https://outlook.office.com/Calendars.ReadWrite ".(范围在com.microsoft.aad.adal.AuthenticationContext.acquireToken()中用于初始化Android Outlook Client的Office REST客户端,这是由orc-for-android提供的共享客户端堆栈)
当我尝试读取我有委托访问权限的另一个用户的日历时,我只收到403响应:
{
"error": {
"code": "ErrorAccessDenied",
"message": "Access is denied. Check credentials and try again."
}
}
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
这是API的限制吗?如果是这样,为什么提供以下方法调用链呢?
outlookClient.getUsers()
.getById("meetingRoom@company.com")
.getCalendarView()
Run Code Online (Sandbox Code Playgroud)
更新:
似乎正在进行的工作将允许此方案,如下所述:Office 365 REST API - 访问会议室日历
因此,如果在这方面取得进展,我可以在不使用" 管理服务应用程序 "的情况下实现我的目标吗?(请参阅Office 365 API或Azure AD Graph API - 获取某些其他日历)
我可以使用此处建议的基本身份验证吗?
android ms-office outlook-calendar office365 outlook-restapi
我正在尝试使用下一个API方法:https://msdn.microsoft.com/office/office365/APi/mail-rest-operations#SendMessages.发送没有附件的邮件很好,但我无法理解如何发送带附件的邮件.
根据文档,Message
结构可以包含Attachments
类型为https://msdn.microsoft.com/office/office365/APi/complex-types-for-mail-contacts-calendar#RESTAPIResourcesFileAttachment的项目的数组.问题出在现场ContentBytes
- 在向此API方法发送请求之前,不可能将字节转储到JSON(实际上将任何BLOB转储到JSON是无稽之谈).
我应该如何Attachments
使用REST API?
谢谢.
似乎任何端点开始时都会/outlook
返回此错误:
GET https://graph.microsoft.com/beta/me/outlook/masterCategories
{
"error": {
"code": "RequestBroker-ParseUri",
"message": "Resource not found for the segment 'Outlook'.",
"innerError": {
"request-id": "a75d1c9a-c6ae-4b69-83ca-fc0e467a4ad7",
"date": "2017-12-26T17:23:17"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已授权范围,mail.read
user.read
mailboxsettings.readwrite
因此我应该能够访问用户的收件箱类别,但是以本文中提到的"outlook"开头的beta API端点:
无论如何都无法访问,我做错了什么?
请记住,我测试了这个端点,它运行良好:https://graph.microsoft.com/beta/me/mailFolders
但是这一个:https://graph.microsoft.com/beta/me/outlook/masterCategories返回上面的错误.
outlook-restapi ×10
office365 ×6
api ×2
c# ×2
android ×1
calendar ×1
ms-office ×1
oauth ×1
office365api ×1
php ×1