我正在开发一款能够管理一些Outlook会议室(用户)预订的Android应用程序。这个想法只是为了显示他们的可用性并在一定时间内预订房间。
到目前为止,我已成功使用Outlook SDK Android在我自己的日历上获取活动。
// logon() {
...
mResolver = new DependencyResolver.Builder(
new OkHttpTransport().setInterceptor(new LoggingInterceptor()),
new GsonSerializer(),
new AuthenticationCredentials() {
@Override
public Credentials getCredentials() {
return new OAuthCredentials(
authenticationResult.getAccessToken()
);
}
}).build();
// onCreate() {
Futures.addCallback( logon(), new FutureCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
mClient = new OutlookClient(outlookBaseUrl, mResolver);
getCalendars();
}
@Override
public void onFailure(Throwable t) {
Log.e("logon", t.getMessage());
}
});
...
protected void getCalendars() {
DateTime startDate = new DateTime(
DateTime.parse("2016-02-05T00:00:00Z"));
DateTime endDate = new DateTime(
DateTime.parse("2016-02-06T00:00:00Z"));
Futures.addCallback(
mClient.getMe()
.getCalendarView()
.addParameter("startDateTime", startDate)
.addParameter("endDateTime", endDate)
.read(),
new FutureCallback<OrcList<Event>>() {
@Override
public void onSuccess(final OrcList<Event> result) {
runOnUiThread(new Runnable() {
@Override
public void run() {
StringBuilder sb = new StringBuilder();
ListIterator<Event> events =
result.listIterator();
while (events.hasNext()) {
Event event = events.next();
sb.append(event.getSubject() + "\n");
}
messagesTextView.setText(sb.toString());
}
});
}
@Override
public void onFailure(Throwable t) {
Log.e("Calendar error", t.getLocalizedMessage());
}
}
);
}
或者使用 getUsers()而不是 getMe()替代方案:请参阅here。
现在接下来的步骤是:
我是否需要管理员用户,甚至只是为了阅读会议室日历或其他方式?
如果我不能使用管理员帐户,我是否可以依靠Oauth流管理多个具有良好可用性/性能的用户?
我是Android新手,处理Outlook REST API或Microsoft Graph更容易吗?
由于
答案 0 :(得分:1)
今天,如果您希望自己的应用访问其他用户的日历,则需要使用客户端凭据流(AppOnly)。我们正在开发一个API,以便尽快获得可用性信息和更多详细信息。
使用OAuth流程可以获得访问令牌和刷新令牌,访问令牌在短时间内有效,刷新令牌可用于生成新的访问令牌。令牌是每个用户,您基本上在每个用户缓存的应用程序中存储刷新令牌。
从平台的角度来看,与单个Outlook端点或Microsoft Graph进行交互是相同的。如果您的应用程序想要访问的不仅仅是日历信息,例如用户配置文件或文件,那么建议使用Microsoft Graph,因为您可以从单个端点下的多个服务访问数据并使用单个访问令牌。
答案 1 :(得分:1)
您需要一个管理员帐户才能在Azure中设置应用程序。设置正确的应用程序权限后,如果您仅使用应用程序授权,则不需要管理员帐户。
Outlook REST API仅提供当前用户的信息,但使用Graph API,您只需向
发送请求即可获得任何会议室或任何用户的活动https://graph.microsoft.com/v1.0/users/<meetingroom/user email>/calendarView/?endDateTime=2015-12-28T22:23:00Z&startDateTime=2015-12-28T00:00:00Z
请注意,日期格式应为ISO 8601格式。
希望它有所帮助。