在 angular-easyfb v1.1.0 released! 中提到是為了這個 Facebook 的 platform versioning 而做了一次更新,所以這個 platform versioning 到底是?
還記得日前有新聞說 Facebook 將推出匿名登入功能嗎? 第一次聽到這消息真是超驚為天人,畢竟目前大部分 “Connect with Facebook” 的運作模式就是靠著取得授權之後的 Facebook user ID 來進行諸如登入之類的操作,如果當真是 “anonymous” 的話,表示基本上就拿不到使用者的真實 Facebook user ID (必須「不能知道那名使用者是誰」),一定會造成許多 Facebook 相關的登入功能崩壞。
為了上述這個,以及往後到來的革命性的變動,Facebook 可能發覺以目前的 API 更動速率沒辦法有效的讓他們快速將新功能推向開發者們。與其每次都要告知開發者們「必須 migrate」的時間點,不如推出一個統一的機制省掉這些麻煩…
於是這個 platform versioning 應運而生。
Tip: 一般來說最大的版號有更動的時候,表示這兩個版本會發生不相容的情況。換句話說在 v1.0
運作正常的程式,在 v2.0
可能會壞得體無完膚
v1.0
就是我們在 2014/04/30 之前使用的 platform,2015/05/30 退役。
雖然可以透過附加 v1.0
在路徑裡的方式來使用 v1.0
的 API ,但這僅限於 2014/04/30 前建立的 Facebook app。
v2.0
2014/04/30 後建立的 Facebook app 一律採用 v2.0
。
改動超多,簡列如下:(詳見 changelog)
Facebook Login
- 在「使用 Facebook 登入」時,你所要求使用者給予的權限都變成 optional,就算使用者不想給你某些權限,還是可以 connect 成功
- 朋友名單從預設權限中切出到
user_friends
- 朋友名單只會列出同樣有使用這個 app 的朋友
- 原本的預設權限名稱由
basic_info
改為public_profile.public_profile
- 使用「使用 Facebook 登入」功能(需要額外的權限時),需要經過 Facebook review
Anonymous Login (Beta)
Audience Network
- Facebook 廣告元件 for iOS and Android
- https://developers.facebook.com/docs/ad-publishers
Send to Mobile for Facebook Login (Beta)
- 使用者造訪你的網站而你的網站同時也有 mobile app 時,Facebook 幫你送 push notification 到使用者的手機讓他快速安裝你的 app
- https://developers.facebook.com/docs/facebook-login/send-to-mobile
Message Dialog
- 在你的 app 中讓使用者可以透過
Facebook Messenger
發送分享訊息(不需 Facebook Login)
App Links
- App to app linking solution
- http://applinks.org/
- https://developers.facebook.com/docs/applinks (Facebook 自己的文件寫得比較清楚)
Like Button for Mobile
- 行動版 like 鈕 (iOS beta 中)
- https://developers.facebook.com/docs/ios/like-button
New PHP SDK for Facebook
- 全新 PHP SDK (PHP 5.4+)
- https://developers.facebook.com/docs/php/gettingstarted/4.0.0
API Versions
- Graph API 加入版本支援 (為了這次的改動)
JavaScript SDK
- 新 CDN 位置: https://connect.facebook.net/{locale}/sdk.js
FB.init()
加入版號支援- 許多
FB.init()
的預設選項變成false
Graph API
-
v1.0 到 v2.0 的更動
-
App-scoped User IDs
- 將拿不到新 connect 的使用者的真實 Facebook user ID,取而代之的是 app-scoped user ID
-
App Friends
- 只拿得到同樣有在使用該 app 的朋友清單
- 所有的 Graph API v2.0 請求都要帶 access token (除了
/{id}/picture
) /me/permissions
格式更改
-
-
v2.0 新功能
-
Taggable Friends API
-
Invitable Friends API
- 可以讓你 invite 的朋友
- https://developers.facebook.com/docs/graph-api/reference/v2.0/user/invitable_friends/
-
Social Context API
- 可以得知朋友的 social context 資料 (諸如也喜歡某電影、也玩某遊戲)
- https://developers.facebook.com/docs/facebook-login/social-context/v2.0
-
Business Mapping API
- 一個公司可以有一堆 app,而這一堆 app 可以透過
/me/ids_for_business
取得一致的 app-scoped user ID - https://developers.facebook.com/docs/apps/for-business
- 一個公司可以有一堆 app,而這一堆 app 可以透過
-
Tagged Places API
- 有被 tag 在哪兒 (photos, videos, statuses, links)
-
new permission
user_tagged_places
-
-
v2.0 移除的 API
- 略
Permissions
-
v1.0 到 v2.0 的更動
- 預設拿不到朋友了,要靠
user_friends
,且只能取得有在使用同個 app 的朋友 - 使用
public_profile
,email
,user_friends
以外的權限都要審核 read_friendlists
拿不到列表內容,只能取得列表名字/me/permissions
取得的資訊列出在進行 Facebook Login 時,那些權限被接受/拒絕
- 預設拿不到朋友了,要靠
-
v2.0 新權限
public_profile
user_friends
user_tagged_places
-
v2.0 移除的權限
- 略
Dialogs
- 移除 friends dialog
- 移除 registration plugin
- Deprecate 舊式的 feed & legacy share dialogs
- feed dialog 中的
to
只能擺入同樣也使用這個 app 的 user ID
FQL
- 少用一點,開始 migrate 吧,遲早要拿掉的
- 一般使用 FQL 的特殊需求都可以用 Graph API including field expansion 及 batche requests 達成
Test Apps
- 永遠是 development mode
- 獨立的 app ID 跟設定
- 共用 production app 的 app-scoped user ID
- https://developers.facebook.com/docs/apps/test-apps
Business Mapping API
- 在多個 app 間共用 app-scoped user IDs
- 需透過 Business Manager 設定
- https://developers.facebook.com/docs/apps/for-business
Games
- 略
Chat
- Chat/XMPP 服務及 API 會隨 1.0 一起下線
結論
要巴著 Facebook 這個平台生存也是很辛苦的。
話說前陣子聽了 meetup 講者的推薦,覺得 React 還蠻酷的;結果最近看了 Google I/O 2014 又覺得 Polymer 才是 future 啊… (轉頭寫 Angular)