所以我有一個單頁客戶端應用程序。App> OAuth2服務器> Facebook> OAuth2服務器> App
正常流程:
應用程序 - >的OAuth2服務器 - >應用
我們有自己的OAuth2服務器,所以人們可以登錄到應用程序,並獲得與用戶實體相關聯的的access_token。 http://api.com/oauth2/auth?access_token=X&redirect_uri=http://app.com&response_type=token
我們的特別流動..
我們也有這種特殊的端點/的oauth2 /供應商/ Facebook的/ AUTH的client_id = Xredirect_uri = http://app.com
應用[1] - > OAuth2用戶服務器[2 ] - >實[3] - >的OAuth2服務器[4] - >應用[5]
[2]: 我們的URLEncode的REDIRECT_URI並將其傳遞作爲自定義參數給Facebook,所以我們可以重定向到http://app.com以後..
[3]:
我們的客戶重定向到Facebook的身份驗證和acccept應用。
[4]:
- Facebook的重定向到OAuth服務器,我們得到的 '代碼'。
- 我們要求一個access_token,我們得到access_token。這一切都發生在CURL的幕後。
- 我們用自定義授權類型(我們將其命名爲http://api.com/facebook,每個oauth2規範)向我們請求我們自己的API(對本地主機的內部API調用)。這是通過客戶端祕密完成的,並在CURL後面發生。
- 我們重定向到最初提供的原始redirect_uri。
這是一個適用於Facebook認證的方式嗎?
我們知道這可以用另一種方式完成,例如,瀏覽器首先要求獲得一個Facebook標記,然後瀏覽器要求一個access_token最終傳遞給我們自己的oauth2端點以進行進一步的驗證和處理,這對於客戶來說是兩個請求,對我而言這似乎相當緩慢和麻煩。或者是?