2015年3月5日 星期四

Facebook Graph API 升級到 v2.x


因為公司的案子有一個 app 還是 v1.0 的狀況,所以最近我只要進入 developers 的頁面都一直被提醒,真的很煩,總之就是告訴你務必在 50 幾天之內趕快把你的 (Graph) API 版本換成 v2.0 的,否則有些權限在 v2.0 之後要全面用審核的方式通過,一些變更像是:


取得好友名單
在 v2.0 就要審核(需要分別跟每個使用者要求 user_friends 權限),而 /me/friends 只會拿到也有使用該 app 共同好友 (In v2.0 of the Graph API, calling /me/friends returns the person's friends who also use the app.)。

詳情你可以看這篇 stackoverflow,沒錯,如果換成 v2.0,/me/friends 可能回傳的資料會是空的,並不是 api 壞了,而是剛好真的沒有共同好友也有使用該 app。你必須搭配 user_friends 加上 /me/friends 才會取到該 user 的好友名單。


Basic info 改為 Public Profile
以前的預設權限叫做 basic_info 會被 public_profile 取代,public_profile 不包含使用者的朋友名單。參考


權限申請審核
public_profile, email, user_friends 之外的 permission,都需要申請審核。


App-scoped User IDs
這大概是我覺得最恐怖的一件升級狀況。
v1.0 app 拿到的 user id 是他在 facebook 上真實的 id,但 v2.0 之後,會針對不同的 app 給不同的 scoped-id,也就是說,user 用 fb 登入你們的 app,你拿的到是他在你 app 之下的 scoped-id,不是他本人在 fb 上的 id。

很多人都在擔心,在詢問: 那以前登入我 app 的 user id 怎麼辦,應該是不會有事,不用擔心 id 不一樣的問題,請參考:How do I get old UserID as of Graph API v2.0?

However, for users that have previously logged into your app, the user ID will not change. 
(這句話我還在想是不是指說,之前登入過 app 的 user,則 id 應該不會被換掉.... 猜的拉,希望是,不然自家的會員系統會大亂...。)



除了要 /{id}/picture 之外,其他所有的 API 都需要 access token。


-------------------這-是-華-麗-的-分-隔-線---------------------


因為日子有點接近,所以特地要注意一下,如果你的 facebook app 使用的 api 是舊版的,要在今年 2015/4/30 之前完成更新到 v2.X 的版本。( We also announced that all apps requesting these additional permissions must undergo review by April 30, 2015, when we will deprecate Graph API v1.0. ),若我有說錯麻煩留言跟我說一下,謝謝。

就我的認知,其實你不自己升級應該也不會有事,fb 應該會幫你升級,只是有些權限你會拿到空的,或是拿不到資料而已...,像是 user_birthday,  friend,要注意自己的程式有沒有判斷到這一塊 QQ,不過,長久之計,還是升級吧..。

以下的文章可以幫助你更加了解升級的事情:

Facebook 之不升級v2.0+ 你怎麼死都不知道指南 BY 羊小咩
Facebook Platform Upgrade Guide
Login Review and API v2.0 Migration Reminder by Andreea Manole - February 27 at 4:00am,這篇文章有提到如何避免你的 app 在 4/30 號之後會壞掉。
Easily upgrade to Graph API v2.x with no code changes by Dan Xu - February 6 at 5:00am
    

11 則留言:

  1. 不好意思 想請教一下,如果向FB索取的資料只有EMAIL 這樣還是需要更新到V2.0以上的版本嗎?

    回覆刪除
  2. 好奇怪,我剛剛留了兩次 google 都沒出現我的回覆,我先 copy一份在這裡:
    Hi, 第一件事情是,無論如何,如果你的 api 還是用 Graph v1.0 的版本,4/30 之後就不再支援,所以你一定要更新,不管你是不是只有要拿 email。

    更新就看你要不要改 code,不想改 code 的話,就要看一下我上面貼的這篇『Easily upgrade to Graph API v2.x with no code changes by Dan Xu - February 6 at 5:00am』。只是新版本 api 有些資料要審核,這個你要自己看,可能就是要不到資料而已,但要小心自己網站的程式這邊會不會出錯,比方說什麼欄位拿到空直,造成頁面有出現錯誤之類的。

    建議還是改 code,畢竟還是要測一下 api跟要回來的資料,如果有些沒要到,程式會不會出錯之類的狀況。

    還有 email 雖然是不需要審核的項目,可是不代表所有註冊的 user 都有 email 可以要,所以你的網站如果是用 email 當主要驗證 user 機制,可能要想一下當拿不到 user 的 email 時,可能要在轉頁回來往按時跟他要 email,這些機制看個人啦,我只是提醒一下有些 user 沒有 email。

    回覆刪除
    回覆
    1. 你好,想請問要怎麼實現「按時跟他要 email」這樣的行為呢?

      自己的APP目前遇到的狀況是,user第一次點了允許的權限之後,之後再點選登入都不會再重新詢問一次允許權限的畫面了@@

      刪除
    2. 除非你有多要新的權限,不然允許過了還需要一直跳出允許權限的畫面?

      刪除
    3. 是想說如果偵測到使用者把email取消的話(拿到token之後測permission),會提醒使用者如果沒有允許email,可能有些功能會無法正常使用。如果使用者願意提供的話,再跳出允許權限的畫面。但是目前卡在最後這一步@@

      刪除
    4. @LMY
      FYI:
      https://developers.facebook.com/docs/facebook-login/permissions/requesting-and-revoking

      "如果用戶拒絕授予您的應用程式權限,「登入」對話方塊將不會讓您的應用程式重新要求權限,除非您將 auth_type=rerequest 連同您的要求一併傳遞。"

      抱歉,其實也有點久了我也忘得差不多了,再麻煩你參考一下最新的文件吧!

      刪除
  3. 瞭解了 非常感謝您的回覆^^

    回覆刪除
  4. Thx,睇來都係升級咗先會好啲

    回覆刪除
  5. 了解了,謝謝妳的回覆^^

    我會再試試看~~

    回覆刪除
    回覆
    1. 不會 也沒幫上什麼忙 QQ 希望你成功達到你要的程式流程 :)

      刪除

若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD

Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...