oauth 2.0 gwt访问令牌和google日历api

oauth 2.0 gwt访问令牌和google日历api,gwt,oauth,google-calendar-api,Gwt,Oauth,Google Calendar Api,我又踏上了一片陌生的土地 我使用这个客户端库来获取一个访问令牌,我可以使用它访问google日历API 在做了一些研究之后,我注意到了另一个客户端库,我可以用它来调用google日历api 现在我不明白的是如何将两者结合起来。所以我现在有了一个访问令牌,但是第二个客户端库中的示例代码在任何地方都没有使用该访问令牌(它只使用来自GoogleAPI控制台的客户端id和api密钥) 这两个库是相互排斥的还是要一起工作 编辑: 我想要实现的是使用第一个库授权我的应用程序访问Google日历,并使用第二个

我又踏上了一片陌生的土地

我使用这个客户端库来获取一个访问令牌,我可以使用它访问google日历API

在做了一些研究之后,我注意到了另一个客户端库,我可以用它来调用google日历api

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

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

编辑:

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

calendar.initialize(new SimpleEventBus(),
    new GoogleApiRequestTransport(APPLICATION_NAME, API_KEY));
当打这个电话时,它会注册第二个应用程序(我可以从我的谷歌账户中的第三方应用程序中看到)。尽管第一个应用程序已经被授权使用谷歌日历,但新注册的应用程序希望再次获得授权

所以我环顾四周,看看是否有一个GoogleApiRequestTransport可以使用现有的应用程序,我设法找到了:


这个GoogleAppRequestTransport允许我设置访问令牌(这是我首先想要的)。但这是一种不推荐的方法。因此,我不知道该如何理解它。

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

private void login(){
OAuth2Login.get().authorize(客户端ID,CalendarAuthScope.CALENDAR,
新回调函数(){
@凌驾
成功时公开作废(作废v){
getCalendarId();
}
@凌驾
公共失效失效失效(例外e){
log(“身份验证失败:”,e);
}
});
}

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

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


@aylz5073该库是否已被弃用?我看到了不推荐使用的链接,但我相信这只是文档呈现方式的副产品,而且由于不推荐使用的链接没有任何内容,我认为它仍然处于活动状态(它是在2011年编写的,希望它还没有过时!)。我四处看了看,我同意您的看法,它看起来像是库处理了必要的存储部分(我在Python中只有这方面的经验,Oauth2令牌的本地存储(或DB存储)也是类似地处理的)。很高兴用我有限的知识进行头脑风暴:)
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);
        }
      });
}