近年來,Facebook的API越來越受到開發者們的青睞,其廣泛應用在各種網站和移動應用中,對于PHP程序員來說,能夠通過Facebook登錄已經是必不可少的一個功能了。本文就來介紹一下如何使用PHP實現Facebook登錄。
首先,我們需要拿到Facebook的開發者賬號,創建應用,并獲取應用的API key 和 應用 secret,確保能夠訪問Facebook Graph API。
$request_uri = urlencode('http://'.$_SERVER['HTTP_HOST'].'/facebook_callback.php'); $scope = urlencode('public_profile,email,user_friends'); $url = 'https://www.facebook.com/dialog/oauth?client_id=' . FACEBOOK_APP_ID . '&redirect_uri=' . $request_uri . '&scope=' . $scope . '&auth_type=rerequest'; header('Location: ' . $url);
上面是一個簡單的重定向邏輯,跳轉到Facebook的授權頁面,授權成功后返回我們配置截獲的url。其中,FACEBOOK_APP_ID需要替換成我們自己的應用id,在Facebook應用后臺查看。
$code = $_GET['code']; if (!$code) { exit('授權失敗'); } $request_uri = urlencode('http://'.$_SERVER['HTTP_HOST'].'/facebook_callback.php'); $url = "https://graph.facebook.com/v2.10/oauth/access_token?client_id=" . FACEBOOK_APP_ID . "&redirect_uri=" . $request_uri . "&client_secret=" . FACEBOOK_APP_SECRET . "&code=" . $code; $ret = curl_get_contents($url); $data = json_decode($ret, true); $access_token = $data['access_token']; if (!$access_token) { exit('獲取access_token失敗'); } $url = "https://graph.facebook.com/v2.10/me?access_token=" . $access_token . "&fields=id,name,gender,birthday,email,picture.width(960)"; $ret = curl_get_contents($url); $data = json_decode($ret, true); $facebook_id = $data['id']; if (!$facebook_id) { exit('獲取facebook_id失敗'); } //TODO 檢查用戶登錄 $_SESSION['facebook_id'] = $facebook_id; //TODO 根據facebook_id獲取用戶數據,或將facebook_id與現有賬號進行關聯
在授權成功后,我們獲得了一個code,將它通過請求獲取access_token。請求成功后,我們可以使用access_token來獲取用戶信息。上面的代碼中,將access_token用于獲取用戶的基本信息,例如id、name、gender、birthday、email和picture。
最后,我們可以根據獲得的facebook_id進行用戶的登錄、注冊、數據獲取等操作。
總結來說,使用PHP實現Facebook登錄基本上需要以下三個步驟:
- 獲取Facebook授權頁面的重定向地址
- 獲取access_token,獲得用戶信息
- 根據facebook_id實現用戶登錄、注冊等操作