Android 管理多个 Outlook 会议室的应用

Android App that manages multiple Outlook Meeting Rooms

我正在开发一个 Android 应用程序来管理几个 Outlook 会议室(用户)的预订。这个想法只是为了显示他们的可用性并预订一定时间的房间。

到目前为止,我已经使用 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():参见 .

接下来的步骤是:

  1. 我是否需要管理员用户才能阅读会议室日历或有其他方式?

  2. 如果不允许我使用管理员帐户,我能否依靠 Oauth 流程以良好的可用性/性能管理多个用户?

  3. 我是 Android 的新手,处理 Outlook REST API 或 Microsoft Graph 更容易吗?

谢谢

  1. 今天,如果您希望您的应用访问其他用户的日历,则需要使用客户端凭据流 (AppOnly)。我们正在开发 API,以便尽快获取可用性信息和更多详细信息。

  2. 使用 OAuth 流程,您可以获得访问令牌和刷新令牌,访问令牌在短时间内有效,刷新令牌可用于生成新的访问令牌。令牌是针对每个用户的,您基本上将刷新令牌存储在您应用程序中的每个用户缓存中。

  3. 从平台的角度来看,与单个 Outlook 端点或 Microsoft Graph 进行交互是相同的。如果你的应用程序想要访问的不仅仅是日历信息,例如用户配置文件或文件,那么建议使用 Microsoft Graph,因为你可以在单个终结点下使用单个访问令牌访问来自多个服务的数据。

您需要一个管理员帐户才能在 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 格式。

希望对您有所帮助。