2016年8月17日 星期三

OAuth 和 Facebook 登入原理

OpenID:用作「身份認證」,如果某網站支援 OpenID,你登入其他網站不需要記憶密碼,只要拿你的 OpenID 登入就好。

OAuth:用作「授權」,舉例而言,如果你需要授權某相片列印公司的網站取得你在 Facebook 的相片,只要該相片列印公司支援 OAuth,你也授權,那該公司就可以取得你在 Facebook 的相片。

OAuth有分1.0和2.0,只討論比較新的2.0

首先,分四個角色

  • 資源擁有者 (Resource Owner): 擁有 Facebook 帳號的用戶 ( 用戶甲 )。
  • 授權伺服器 (Authorization Server): kkbox向 facebook 取得使用者授權的伺服器
  • 資源伺服器 (Resource Server): 保管用戶甲 facebook 資料的 server
  • 用戶端 (Client): 想要取得用戶甲 facebook 資料的 kkbox


整體的流程是:


首先,kkbox在 facebook 有一個應用程式。

有一天,用戶甲到 kkbox 網站想聽音樂, kkbox 必須要取得用戶甲的 facebook 帳號授權,才可以取得用戶甲在 facebook 的資料。

因此  kkbox 把用戶甲重新導向到 facebook,用戶甲必須向 facebook 說明「我授權給  kkbox 」,之後 facebook 會告訴  kkbox 的網站「我已經取得用戶甲的授權了」,證明的方法是發送一個授權token給  kkbox 的網站。

但這時  kkbox 不能確定這個授權token真的是 facebook 給的,因此  kkbox 必須要把這個token送回給 facebook,讓 facebook 告訴  kkbox 這個授權是真的,如果是真的,facebook 會交給  kkbox 一串「access_token」,這個東西就是萬能的鑰匙!  kkbox 公司用這個就可以向 facebook 取得所有用戶甲授權的資料了!



Related Posts:

  • Ch04 - 介紹 Objective-C 的運算式以及一些運算子 Objective-C 程式設計學習筆記 Ch04 Ch04-介紹 Objective-C 的運算式以及一些運算子。 本章會介紹的運算式就是基本的四則運算,也就是加『+』,減『-』,乘『*』,除『/』的四種組合,另外也會提到模數運算子(Modules Operator)『%』(講白話一點 % 就… Read More
  • Ch07 - 介紹 Objective-C 類別(1) Objective-C 程式設計學習筆記 Ch07 Ch07-介紹 Objective-C 的類別。 其實這章不只講類別,還會提到物件導向的觀念,實體以及方法,以及會回到 ch01 所提及的 Objective-C 承襲 Smalltalk 的訊息傳遞模型 (message passing)… Read More
  • Ch08 - 介紹 Objective-C 類別(2) Objective-C 程式設計學習筆記 Ch08 Ch08-介紹 Objective-C 的類別相關的應用。 這章節只是更深入介紹一些關於類別的功能,像是...上一章節,我們已經學會將介面檔 (interface)、實作檔(implementation) 分開,並且學會實作 getter … Read More
  • Ch05 - 介紹 Objective-C 迴圈 Objective-C 程式設計學習筆記 Ch05 Ch05-介紹 Objective-C 迴圈。 本章會介紹 for, while 以及 do 這三種迴圈的程式敘述。 介紹關係運算子 ( 如 >=, ==...), 介紹遞增,遞減運算子。 迴圈可以幫助我們以一些確定的規則,進行重複的… Read More
  • Ch06 - 介紹 Objective-C 的流程控制 Objective-C 程式設計學習筆記 Ch06 Ch06-介紹 Objective-C 的流程控制。 本章會介紹 if, switch 以及 三元運算子。 目錄: (1) if 敘述 (2) switch 敘述 (3) 三元運算子 if 敘述我們在上一章節已有稍微介紹,在這章節會介… Read More

0 意見:

張貼留言