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

16三月/122

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

Google PageRank查詢

前言

前幾天介紹了實作 oAuth 2.0 連接 Google Api,今天這一篇就是同系列的第二篇了,這次是要連接 Facebook Graph API,基本上和那篇是大同小異的,但是在參數和連接的方式略有不同,所以也獨立一篇出來,讓需要的朋友可以直接參考這一篇就可以了。

說明

之前文章已先介紹過如何申請 Facebook API 了,這邊就不多做介紹如何申請和設定回傳的網址了。請讀者先行準備好需要的資料囉!

接下來開啟一個新的 ASP.Net MVC3 空專案

新增一個 Controller,本例中為 HomeController

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

先準備好 const 參數,並且設定好申請的值囉!

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

index

Facebook 在這邊可以省略 response_type 和 state 參數。而權限的部份以半型逗號(,)作為分隔。

CallBack

使用者允許授權之後就會轉到一個網址,並且帶 Code 參數,我們在透過這一個參數去取得 AccessToken,請求 AccessToken 的時候是使用 GET 方法,正確取得之後就將他記錄在 Session(或是資料庫),如果有加上 offline_access 權限的話更是建議存在資料庫,之後只需要該組 AccessToken 就可以了,然後再轉到 CallAPI 來呼叫 API,這邊不建議把 Token 當做參數傳給 CallAPI ,避免直接暴露給 Client 端。

CallAPI

這邊範例是去呼叫個人資料的 API,只需要使用  GET 方法,加上 access_token 參數就可以取得結果的 JSON 囉!

執行結果

都寫好之後執行,在登入的狀態下就會出現請求授權的畫面囉!

而授權畫面應該是最近才改的,和之前的授權畫面略有不同,而且會根據要求的權限的不同可能會多一個額外授權的畫面。

都同意後就可以取得個人資料囉!

完整範例下載

結論

Facebook 的 Oauth 2.0 授權流程和程式實作就是這樣囉!接下來就是根據需求去找到自己需要的 Graph API,然後看文間內說明需要傳哪些參數,以及回傳的 JSON 各欄位代表什麼資料就可以啦!

參考資料

Facebook Authentication

Graph API - User

回覆 (2) 引用 (0)
  1. 老師您好,我想要寫一個程式可以自動利用FB的API抓取塗鴉牆的留言,
    這個授權只有我自己的FB帳號要用,
    (也就是用我的帳號去看別人的塗鴉牆),所以我只要有自己的授權就好,
    不用其他人授權給我,
    可是會面臨到FB Access Token 2個小時過期的問題,
    我現在取得FB Access Token的方式是去下面這個網址取得存取代碼(Access Token)
    http://developers.facebook.com/tools/explorer
    再把它寫在php程式碼裡面
    請問有什麼辦法可以在跑程式的時候自動取得FB Access Token嗎?
    還是一定要用滑鼠去點那個同意授權的視窗呢??
    感謝您~

    黯雲回應:
    Facebook 有一個權限 offline_access ,加上這一個取得的 Token 就會永久有效喔。

  2. 你好,老师,请教我想获取facebook的中文名字,如英文字段名是,name,那么中文字段名是什么, ?

    黯雲回應:
    可以參考這一個頁面:https://developers.facebook.com/docs/reference/api/user/


Leave a comment

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