週末長知識: Facebook Platform Versioning

f8.png

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

Send to Mobile for Facebook Login (Beta)

Message Dialog

  • 在你的 app 中讓使用者可以透過 Facebook Messenger 發送分享訊息(不需 Facebook Login)

Like Button for Mobile

New PHP SDK for Facebook

API Versions

  • Graph API 加入版本支援 (為了這次的改動)

JavaScript SDK

Graph 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

Test Apps

Business Mapping API

Games

Chat

  • Chat/XMPP 服務及 API 會隨 1.0 一起下線

結論

要巴著 Facebook 這個平台生存也是很辛苦的。

話說前陣子聽了 meetup 講者的推薦,覺得 React 還蠻酷的;結果最近看了 Google I/O 2014 又覺得 Polymer 才是 future 啊… (轉頭寫 Angular)