2013/03/24

Facebook Login API For PHP

現在有很多網站使用 facebook 或 Google 的帳號登入,優缺各有,缺點是取得的資料較有限,也可能相對不真實,對方也可以透過設定限制抓取的內容,優點是速度快,可以增加會員加入的意願,在這邊紀錄一下自己使用 fb api 的經驗。

申請 fb app

這個流程網路隨便搜尋就一大堆,所以我這邊就不介紹了,所有的 api 要使用一定要拿到 App ID 以及 App Secret。

下載 sdk

PHP SDK,fb 另外提供許多語言 sdk,如 JavaScript, Android, iOS,直接去 deleopers 的頁面找尋下載即可。

登入頁面佈置

include 'fb/facebook.php'; // 將下載的 sdk 導入

// 初始 class 的設定
$facebook = new Facebook(array( 
    'appId'  => FB_APP_ID, 
    'secret' => FB_APP_SECRET 
));

// 想要抓取的內容
$params = array(
    scope => 'email, user_birthday',
    redirect_uri => $chan->retUri('/fb-login.php') // 我自己設定的頁面名稱,fb 驗證完後會導回這頁
);

// fb 會幫你算出驗證登入的超連結,按下去以後變會導到驗證頁麵
$fbLoginUrl = $facebook->getLoginUrl($params);

其他的 scope 可以在 fb 參考文件 找到。

fb-login.php

include 'fb/facebook.php'; // 將下載的 sdk 導入

// 初始 class 的設定
$facebook = new Facebook(array( 
    'appId'  => FB_APP_ID, 
    'secret' => FB_APP_SECRET 
)); 

$uid = $facebook->getUser(); // 開始抓取用戶資料

if ($uid) {
    $profile = $facebook->api('/me','GET');
    $email = $profile['email']; // email
    $gender = $profile['gender']; // 性別 male / female
    $nickname = $profile['name']; // 名稱
    $birthday = $profile['birthday']; // 生日 01/05/1980

    // 抓取大頭照
    $imgSrc = file_get_contents('https://graph.facebook.com/'.$uid.'/picture?type=large');
    $imgName = $uid.'jpg';
    $imgFile = 'profile/'.$imgName;
    file_put_contents($imgFile, $imgSrc); // 儲存大頭照
}

沒有留言: