Ruby on Rails中
但老實說,Facebooker 並沒有將有點複雜的 Facebook API簡化多少,
我也一直沒有好好弄懂
而Facebook在四月底出了新的 Graph API
看了一下,感覺很平易近人,就此決定跳槽過去
新的 Graph API 已經很簡潔,其實可直接使用
另一個選擇是 Facebooker的作者為了新的Graph API,新寫的 mogli
用戶資料的授權使用,都是採用OAuth方式
也就要先拿到用戶的Access Token
Access Token可以用Graph API來取得 (MiniFB.oauth_access_token)
也可以 JavaScript SDK 中的FB.login來取得
JS_1. 像以前的Facebook Connect (現在改名Login with Facebook):
<fb:login-button perms="email"></fb:login-button>
上面是產生 Login with Facebook 的按鈕,
perms代表除了基本授權外,另外再向用戶要求email資料
並用JS設定登入後的動作
FB.Event.subscribe('auth.login', function(response) {
if (response.perms) {
// 用戶登入成功,並額外授權perms
} else {
// 用戶登入成功,不額外授權
} } else {
// 登入失敗
}
});
JS_2. 自行建立link或button, and bind click event
FB.login(function(response){
if (response.perms) {
// 用戶登入成功,並額外授權perms
} else {
// 用戶登入成功,不額外授權
} } else {
// 登入失敗
}
},{perms:'email'});
登作成功後,Facebook會在用戶端建立一個 "fbs_你的APP_ID" 的Cookie
可先認證是否真實有效 (MiniFB.verify_cookie_signature)
Cookie中含有 uid-> 用戶的FB ID 及 access token
有了access token,就可以取得用戶資料囉
如果你請求 offline_access 授權,就可把這個token存入資料庫中,日後好使用
額外請求的用戶email,則可用FQL叫出來
從Facebooker轉往mini_fb
可延用fb_user_id, email_hash應該不需要了
login_from_fb 可改為
if facebook_cookie.present?
User.find_by_fb_user_id( facebook_cookie["uid"] )
end
logout最簡單的方法 :onclick=>"FB.logout();",並清掉cookie及sessions