[PHP] 如何使用 Facebook 帳戶實作用戶登錄和註冊自己的網站 [Graph API]


Graph API 是 Facebook 所推出的一種技術標準,它的核心概念是: 「物件與連結」。為什麼稱為「Graph API」呢? Facebbook將整個社群抽象為物件與物件之間連結的圖。☞ Graph API是什麼東東?
現在用戶並不感興趣填寫個人基本資料去註冊一個網站。簡短地註冊可以幫您的網站獲得更多的用戶。Facebook是目前最熱門的社群網絡,大多數的人都擁有Facebook帳戶。因此使用Facebook帳戶,是整合註冊及登入您的網站,一個快速且有效的方法。Facebook登錄允許用戶使用他們的Facebook帳戶憑證登錄您的網站,而無需在您的網站上註冊。

# 應用程式設定

1. 註冊為 Facebook 開發人員

2. 建立新的應用程式 APP ID、取得 APP Secret

如果要使用Facebook做為會員帳號認證機制,那必需先到Facebook Developers 成立一個應用程式,並且拿到兩組不同的 key,分別是 APP_ID 和 APP_SECRET_KEY。
Facebook Developer 開發者中心



3. 網站與 Facebook 應用程式建立連結




當應用程式連結出現以下錯誤,表示上述的網域與子網域設定有誤


4. 用戶端 OAuth 設定



當應用程式連結出現以下錯誤,表示上述的用戶端 OAuth 設定有誤


FACEBOOK 登入串接
.用戶端 OAuth 登入啟用標準 OAuth 用戶端權杖流程。
.透過以上選項來鎖定允許哪些權杖重新導向 URI,可保護應用程式安全並防止濫用。
.如果不使用,則可以全域停用。
.網路 OAuth 登入針對建立自訂登入流程啟用網頁型 OAuth 用戶端登入。
.嵌入的瀏覽器 OAuth 登入啟用 OAuth 用戶端登入的瀏覽器控制重新導向 URI。
.強制網路 OAuth 重新驗證開啟時,會提醒用戶輸入 Facebook 密碼才能登入網頁。

5. 公開發佈應用程式


當應用程式連結出現以下錯誤,表示你尚未將應用程式設定為公開



# 程式實作

6. https://www.facebook.com/dialog/oauth:透過 login dialog 經過用戶授權取得 access token


10分鐘理解OAuth和facebook登入原理
How to make website registration easier using facebook accounts
facebook 並沒有提供 OpenID 服務,只提供 OAuth,因此雖然 OAuth 的用途不是身份認證,但我們可以利用 OAuth 的特性來登入使用者。你的網站必須把使用者重新導向回 facebook,讓使用者告訴 facebook 可以授權給你。

如果授權成功,facebook 會向你給的 redirect_uri 傳一串code給你,這個code就是使用者授權給你家網站的證據。
http://www.facebook.com/dialog/oauth?
client_id=你的app id&
redirect_uri=你的導向網址&
scope=要求權限&
response_type=FB回應的方式

7. https://graph.facebook.com/oauth/access_token:取得 access_token

為確定這個code真的是facebook傳回給你的,你必須要拿這個code向facebook換access_token。
https://graph.facebook.com/oauth/access_token?
client_id=YOUR_APP_ID&
redirect_uri=YOUR_APP_REDIRECT_URL&
client_secret=YOUR_APP_SECRET&
code=CODE_PARAMETER

8. https://graph.facebook.com/me:取得登入的使用者資料

1) 拿這個access_token去問facebook這個人是誰,facebook就會告訴你,因此你就把該名使用者資訊寫到database註冊這名使用者。

2) 之後該名使用者如果再度來到你的網站,你一樣可以問facebook該名使用者是誰,然後檢查是否資料庫已經存在該名使用者的資料,如果是的話,就可以把該名使用者登入進去你的網站。

9. Facebook 中如何取消應用程式的存取授權

隱私設定> 應用程式> 移除

〔範例下載〕

  • Facebook PHP SDK
  • Facebook Graph API
  • store the user profile data into the MySQL database
(連結DB) Login With Facebook Using API In PHP   [Download source code]
(不連結DB) Login With Facebook Using API In PHP  [Download source code]
(不連結DB) Login With Facebook Using access_token In PHP
(不連結DB) Login With Facebook Using access_token In PHP (精簡版)

Source

Facebook API Sample
Facebook api - 手動建立登入流程
網站利用 Facebook 帳號登入 (使用 OAuth)
東之宿_開發日誌-7(Facebook 登入)
如何在自己的網站使用facebook登入系統
[教學] FACEBOOK APP ID 申請,建立應用程式取得 APP 密鑰 ★
[教學]如何申請建立 Facebook APP ID 應用程式ID ?
Login with facebook using PHP ( Demo and Download )

沒有留言:

技術提供:Blogger.