【问题标题】:oauth 2.0 gwt access token and google calendar apioauth 2.0 gwt 访问令牌和谷歌日历 API
【发布时间】:2012-11-13 12:09:21
【问题描述】:

我又踏入了陌生的领域。

我使用这个客户端库https://code.google.com/p/gwt-oauth2/ 来获取一个访问令牌,我可以使用它来访问谷歌日历 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 让我可以设置访问令牌(这是我最初想要的)。但它已被弃用。所以我不知道该怎么做。

【问题讨论】:

    标签: gwt oauth google-calendar-api


    【解决方案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 本身交互。

    【讨论】:

    • @aylz5073 这个库真的被弃用了吗?我看到了 Deprecated 链接,但我相信这只是文档呈现方式的副产品,并且由于 Deprecated 链接没有任何内容,我认为它仍然处于活动状态(它是在 2011 年编写的 - 希望它还没有过时!)。我环顾四周,我同意你的观点,看起来该库处理了必要的存储部分(我只在 Python 中有过这方面的经验,并且 Oauth2 令牌的本地存储 [或 DB 存储] 也是类似处理的)。很高兴以我有限的知识继续头脑风暴:)
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 2015-04-01
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 2014-10-17
      相关资源
      最近更新 更多