31 May 2010








如果想要使用Google Data API,在Google中有幾種認證提供選擇!

在這裡利用AuthSub來做說明!!

在Google App Engine中使用Google行事曆!

首先我們必須先去申請AuthSub!


然後必須先AddDomain!

這邊我們加入了一個Domain為: ken-note.appspot.com

注意:一定要是根目錄!不能是: ken-note.appspot.com/login

新增成功後呢!

Google必須驗證此Domain的擁有權是否為你的!

有三種新增方式:


  1. 中繼標記    (就是把code放在head之中)
  2. 上載HTML檔   (Google會提供一個HTML檔案,把它上傳至gae後,按驗證即可)
  3. 新增DNS記錄     (因為一定要是domain的擁有人才可以新增,我們不是appspot.com的擁有人,因此不能新增)
這邊我們用第一個例子來做說明!

只要在您首頁的header加入meta,譬如是:index.jsp

如:

<head>
<meta name="google-site-verification" content="bHmA4RSzJdTse8mArcUO47g0rLfAYTOjxsq9E7i6sog" />

</head>


接著上傳上去以後,回到驗證擁有權的頁面!

按下驗證,驗證成功後

會到下個頁面去

如圖































在上圖的紅色方塊中,我們需填入我們需要對Google行事曆作操作的page..

在這個例子就是http://ken-note.appspot.com/select/calendar

接著按下save即可!!

申請工作就完成了!!


接著就來寫CODE了!

打開你的eclipse吧!!

首先必須先產生一個連結!

讓使用者點選!

點選以後會到一個頁面(Google給您的)來做確認是否要存取行事曆!

那段CODE如下


<%

String strUrl= AuthSubUtil.getRequestUrl("http://ken-note.appspot.com/select/calendar","http://www.google.com/calendar/feeds/",false,true);

String strLink = "<a href=\"" + strUrl + "\" "+onclick+">點選此處登入Google行事曆。</a>";

%>

<%=strLink %>



AuthSubUtil.getRequestUrl(填入如在驗證擁有權的page,填入要存取的服務,false,true);



接著就來寫對google行事曆作操作的code!

就是該/select/calendar page


 
CalendarService cs = new CalendarService("test"); //先create一個Calendar Service的Object

String token = AuthSubUtil.getTokenFromReply(request.getQueryString()); //接著要取得token,token是google回傳給您的

token = AuthSubUtil.exchangeForSessionToken(token, null); //進行轉換的動作!

cs.setAuthSubToken(token);

java.net.URL feedUrl = new java.net.URL("http://www.google.com/calendar/feeds/default/allcalendars/full");

CalendarFeed resultFeed = cs.getFeed(feedUrl, CalendarFeed.class); //進行連線



for (int i = 0; i < resultFeed.getEntries().size(); i++) {

CalendarEntry entry = resultFeed.getEntries().get(i);

response.getWriter().print(entry.getTitle().getPlainText()); //取得行事曆的內文,entry(CalendarEntry)底下有很多method,大家可以自行試試看

 

}



照著上列步驟操作即可完成對Google 行事曆作操作了!



















blog comments powered by Disqus