Upgrade Guide - Upgrading from v1.0 to v2.0
Graph API升級筆記。
由於v2.0於2016/4/30到期,因此建議直接升到最新版本v2.2。
Implementing Versions in your Apps
Graph API有版本差異:
- 部份Graph API endpoints輸出內容些許不同,例如:
me?fields=friends
不再能取得所有朋友,而只有授權此App的朋友。 -
什麼權限是可以取得的、當使用者同意授權時App可以取得什麼,是有版本差異的。例如:
- 使用者的朋友這個權限在v1.0和更早之前的版本中是預設可取得的,但在v2.0開始獨立出來成為「user_friends」權限,必須特別要求。因此v2.0之後多出了兩個API「Taggable Friends API」和「Invitable Friends API」。
- 移除「friend_*」相關權限。例如不再能經由
me?fields=friends{likes}
取得朋友的個人資訊(朋友的like項目)。要等到朋友也授權此App後才能取得。
- Dialog的行為:Login Dialog在v2.0之後可以選擇要授權的權限。
Upgrading Web Apps
- 更新SDK的路徑
- 初始化的時候指定API版本
Update the path to the SDK: Change the path to the JavaScript SDK
js.src = "//connect.facebook.net/zh_TW/all.js";
或
js.src = "//connect.facebook.com/en_US/all.js";
而我們必須更正為
js.src = "//connect.facebook.com/en_US/sdk.js";
初始化的時候必須指定API版本
過去我們不需要在初始化時告知SDK使用的API版本,可默認,但現在必須指定。
FB.init({
appId : '{app-id}',
version : 'v2.0'
});
Login
登入時v1.0與v2.0+的不同處:
-
授權哪些權限是可以被選擇的。因此若使用者在一開始的時候沒有授權某個權限,在後續使用此功能時也要能讓使用者重新授權(查詢使用者目前的授權狀況:/me/permissions)。
- v1.0 使用者無法選擇授權哪些權限。
- v2.0 可選擇授權哪些權限。
-
重新授權:Web apps must explicitly pass a new option to the Login Dialog: auth_type: rerequest.
FB.login( function(response) { console.log(response); }, { scope: 'user_likes', auth_type: 'rerequest' } );
-
不再能取得所有朋友,而只有授權此App的朋友。
- 基本資訊權限在v1.0稱為「
basic_info
」,V2.0之後移除朋友相關資訊的基本資訊權限稱為「public_profile
」。 - 如果要求的權限超過基本權限外,必須經過Facebook Login Review。
Permissions Changes
- 基本資訊權限在v1.0稱為「
basic_info
」,V2.0之後移除朋友相關資訊的基本資訊權限稱為「public_profile
」。取得朋友權限被獨立出來稱為「user_friends
」,且「/me/friends」不再能取得所有朋友,而只有授權此App的朋友。 - 權限「
read_friendlists
」不再允許讀取朋友,只能讀取朋友列表的名稱。 - 加入新的權限「
user_tagged_places
」,並且使用「/me/tagged_places」取代「/me/locations endpoint」(取得打卡地點)。
v2.0+不再使用的權限
- create_event
- manage_friendlists
- read_requests
- user_checkins
- user_notes
- useronlinepresence
- user_questions
- user_subscriptions
- xmpp_login
- friendsaboutme
- friends_actions.books
- friends_actions.fitness
- friends_actions.music
- friends_actions.news
- friends_actions.video
- friendsactions:APPNAMESPACE
- friends_activities
- friends_birthday
- friends_checkins
- friendseducationhistory
- friends_events
- friendsgamesactivity
- friends_groups
- friends_hometown
- friends_interests
- friends_likes
- friends_location
- friends_notes
- friendsonlinepresence
- friends_photos
- friends_questions
- friends_relationships
- friendsrelationshipdetails
- friendsreligionpolitics
- friends_status
- friends_subscriptions
- friends_videos
- friends_website
- friendsworkhistory
Login Review
相關可參考「Facebook Login Review筆記 Day 1 - Overview」與「Facebook Login Review筆記 Day 2 - Policies and Best Practices」。
其中要注意的是,如果A與B為朋友且皆授權此App,但B拒絕授權「user_friends」,則A也無法從「me/friends」取得朋友B。
如果有使用http request也要加上版本號
https://www.facebook.com/v2.0/dialog/oauth?
client_id={app-id}
&redirect_uri={redirect-uri}
FQL
v2.0 以後不再使用FQL。
Reference
推薦閱讀
- Facebook Login Review筆記 Day 1 - Overview
- Facebook Login Review筆記 Day 2 - Policies and Best Practices
留言