Coding 之路,不由分說 .Net,MVC,jQuery

14三月/121

【oAuth 2.0 實作系列】ASP.Net MVC 實作使用 oAuth 2.0 連接 Google API

Google PageRank查詢

前言

昨天簡單介紹了 oAuth 2.0 的流程,但是只用文字描述還是沒辦法清楚瞭解 oAuth 2.0 的驗證流程,接下來會介紹如何使用 ASP.Net MVC 來實作用 oAuth 2.0 連結 Google、Facebook、Windows Live 的 API,並且說明一些參數上的差別和驗證的網址。而這一系列第一篇就是連接到 Google API 囉!

實作

首先先參考之前的文章,申請好 Google API 金鑰,並且設定好 Callback 網址(可以先開好專案,編譯後執行取得測試的網址)。

開啟一個新的 ASP.Net MVC3 的專案。

使用 NuGet 加入 JSON.Net 這一個套件,因為後續回傳的資料會是 JSON,透過這一個套件可以方便轉成我們的類別。 

建立一個 Controller,本例為 HomeController。 

新增一個靜態類別 Utility ,並且新增一個靜態方法 UrlEncode,這邊不用微軟內建的函數是因為微軟在部分字元上編碼有些許不同,因此使用自定的方式來處理避免有所差異導致錯誤。

接下來新增一個 TokenData 類別,之後用來轉換接收到的 JSON 資料,未來接收到的會有四個參數,但是之後連接 API 我們只會用到 access_token。

接下來開始修改 Controller 囉!首先準備好 const 參數

接下來撰寫三個 Action:index、CallBack、CallAPI

index

這邊在網址部分, Google 還多了 approval_prompt 參數,它為非必填,預設值為 auto,會在每次連接到允許授權網址的時候都需要使用者做驗證,可以設定成 force,這樣的話使用者認證過就會自動跳過授權畫面轉到你設定的回傳網址。

Callback

使用者允許授權之後就會轉到一個網址,並且帶 Code 參數,我們在透過這一個參數去取得 AccessToken,正確取得之後就將他記錄在 Session(或是資料庫),然後再轉到 CallAPI 來呼叫 API,這邊不建議把 Token 當做參數傳給 CallAPI ,避免直接暴露給 Client 端。

CallAPI

執行程式

程式都寫好之後就是開始測試了,首先就是第一階段的允許授權的畫面 

按下允許之後,程式就會回傳到 CallBack 這一個 Action 並且帶 Code 這一個參數,我們在透過這一個參數去取得 Token,取得之後就直接轉去 CallAPI 來使用,就可以取得行事曆列表囉!

完整範例下載

結論

透過實作的範例,應該就可以更容易了解到整個 oAuth 的驗證流程了,而其中 API 需要的 Scope 和 API 網址都可以從 Google API 的文件中找到,這邊只使用到 Google Callendar API,如果是別的 API就請讀者自行尋找文件囉!

參考連結

Using OAuth 2.0 to Access Google APIs

CalendarList: list

回覆 (1) 引用 (0)
  1. 是否能請作者大人百忙中抽空寫一篇關於XUITE
    http://api.xuite.net/document/bin/xuite_dev/public/oauth
    http://api.xuite.net/document/bin/xuite_dev/public/front/index/id/242
    感謝萬分

    黯雲回應:
    最近比較忙碌,有時間會看看,不過基本上是一樣,大概都只要更換api網址應該就可以運作了。


Leave a comment

目前沒有人引用這篇文章。