使用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不支持此则直到最近因为在这里,其中提到有新的范围,允许访问共享的日历。但它仍然不起作用。
我在两个平台上对此进行了测试:Azure 和 Microsoft Graph
我调用 Office API v.1.0 为:
授权网址:
Run Code Online (Sandbox Code Playgroud)https://login.microsoftonline.com/common/oauth2/authorize?client_id=%1$s&redirect_uri=%2$s&response_type=code代币网址:
https://login.microsoftonline.com/common/oauth2/token日历网址:
https://outlook.office.com/api/v1.0/Me/Calendars
它只给我当前登录/授权用户创建的日历。
由于这不起作用,我尝试使用 API 的第 2 版,但得到以下结果:
Run Code Online (Sandbox Code Playgroud)Additional technical information: Correlation ID: 7abf370a-d918-4514-bd74-cf5fc93fe3cf Timestamp: 2016-10-31 09:32:06Z AADSTS70001: Application 'f7571710-84e2-4444-8bfe-5eef92f4a46d' is not supported for this API version.
所以我尝试使用 Microsoft Graph 应用程序
我这里的应用程序还包含所有必需的权限。
我调用 office API v2.0 为:
授权网址:
Run Code Online (Sandbox Code Playgroud)https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=%1$s&redirect_uri=%2$s&response_type=code&scope=%3$s范围是:
Run Code Online (Sandbox Code Playgroud)private static $scopes = array( 'https://outlook.office.com/calendars.read', 'https://outlook.office.com/calendars.readwrite', 'https://outlook.office.com/calendars.read.shared', 'https://outlook.office.com/calendars.readwrite.shared', );代币网址:
https://login.microsoftonline.com/common/oauth2/v2.0/token日历网址:
https://outlook.office.com/api/v2.0/Me/Calendars
再次不给我共享日历。 …
calendar azure office365 outlook-restapi microsoft-graph-api