0

我又踏入了陌生的领域。

我使用此客户端库https://code.google.com/p/gwt-oauth2/来获取可用于访问 google 日历 API 的访问令牌。

在做了一些研究之后,我注意到另一个客户端库http://code.google.com/p/gwt-google-apis/source/browse/trunk/apis/samples/calendar/com/google/api/gwt/samples/ calendar/client/CalendarEntryPoint.java,我可以使用它来进行谷歌日历 api 调用。

现在我不明白的是如何将两者结合起来。所以我现在有一个访问令牌,但是第二个客户端库中的示例代码在任何地方都没有使用该访问令牌(它只使用来自 google api 控制台的 client_id 和 api_key)。

这两个库是互斥的还是要一起工作的?

编辑:

我想要实现的是使用第一个库授权我的应用程序访问 Google 日历,并使用第二个库进行 API 调用。问题是,当我使用第二个库进行 API 调用时,它无法识别我的应用程序已经被授权使用 Google 日历,我认为问题在于示例代码中的这一行:

calendar.initialize(new SimpleEventBus(),
    new GoogleApiRequestTransport(APPLICATION_NAME, API_KEY));

进行此调用时,它会注册第二个应用程序(我可以从我的谷歌帐户中的第三方应用程序中看到这一点)。即使第一个应用程序已被授权使用 Google 日历,新注册的应用程序仍希望再次获得授权。

所以我环顾四周,看看是否有可以使用现有应用程序的 GoogleApiRequestTransport,我设法找到了这个:http ://gwt-google-apis.googlecode.com/svn-history/r1914/trunk/apis/javadoc /latest/javadoc/com/google/api/gwt/shared/GoogleApiRequestTransport.html

这个 GoogleApiRequestTransport 让我设置访问令牌(这是我首先想要的)。但它已被弃用。所以我不知道该怎么做。

4

2 回答 2

1

我会先说我的 Java 知识不存在。您指出的第二个库实际上也进行了 Oauth2 身份验证。在此代码块中(从第 75 行开始):

private void login() {
  OAuth2Login.get().authorize(CLIENT_ID, CalendarAuthScope.CALENDAR,
      new Callback<Void, Exception>() {
        @Override
        public void onSuccess(Void v) {
          getCalendarId();
        }
        @Override
        public void onFailure(Exception e) {
          GWT.log("Auth failed:", e);
        }
      });
}

您可以看到对 的调用OAuth2Login.get().authorize(),该过程将生成类似于您在第一个库中看到的访问令牌(同样,我对 Java 的熟悉限制了我在这里的实用程序)。长话短说,似乎仍在实施相同的 Oauth2 过程,所以回答你原来的问题,这两个库基本上是完成同一件事的两种方式 - 第一种只是处理 Oauth2 交互,但第二种提供了完整的包以与 API 本身交互。

于 2012-11-26T03:09:20.310 回答
0

我刚刚记录了我成功集成 Google 日历的方法。如果不使用 Google 库,我找不到任何文档来访问日历。所以我自己写了:

http://www.tqis.com/eloquency/googlecalendar.htm

于 2013-01-05T19:25:03.017 回答