2012-11-26 145 views
0

我再次踏入陌生領域。oauth 2.0 gwt訪問令牌和谷歌日曆api

我使用此客戶端庫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)。

這兩個庫是相互排斥還是他們一起工作?

編輯:

我想實現的是授權我的應用程序使用的第一個庫谷歌日曆的訪問,並使用第二API調用。麻煩的是,當我與第二Library API調用,它不承認我的應用程序已經授權使用谷歌日曆,我相信麻煩的是這一行從示例代碼:

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讓我設置的訪問令牌(這是我的希望第一名)。但它已被棄用。所以我不知道該怎麼做。

回答

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自身進行交互。

+0

感謝您的迴應。請看我的編輯。 – allenylzhou

+0

@ aylz5073那個庫實際上已被棄用?我看到了已棄用的鏈接,但我相信這只是文檔呈現方式的副產品,並且由於已棄用的鏈接沒有任何內容,因此我認爲它仍然是活動的(並且它是在2011年編寫的 - 希望它還沒有過時!)。我看了一下,我同意你看,它看起來像庫處理必要的存儲塊(我只有Python的經驗,並且本地存儲[或DB存儲]的Oauth2令牌類似地處理)。高興地與我有限的知識保持頭腦風暴:) – RocketDonkey