2014年5月10日 星期六

Android 開發 (四十二) facebook v2.0(3.14SDK) Scope app match to other app using Business api

最近 facebook 發佈了 sdk 3.14版本,其中最主要的修改是 facebook 在 4/30號之後註冊的app再也無法使用原本的api取得 friend list ,必須使用invitable api 來取得資料,並且限定app類型為GAME才能取得,取得的資料也有做一些變更,不過這部分不會在這裡多做說明(或許之後吧....),
以及新的app取得的fb_id不再是使用者真實的fb id ,而是scope  id,也就是說這個id僅可在我的app 裡面使用,也就是說同一個使用者在不同的app裡面擁有的fb id 不再相同。

假設我今天擁有多個app,我希望在多個app中確認該登入的使用者是否已經在我其他的app中登入過,我就必須使用 business api來map scope id。

在這裡我會稍微講解如何使用 Business api來 map Scope app,
要使用Business api 首先必須前往
設定 -> 進階

並完成註冊,只需要填一些基本資料即可,
如果卡在 You're not a Page Admin on any Facebook Pages.
他的意思是說,你必須在一個粉絲頁中擁有 Admin權限,最快的做法就是
只需要在自己的帳號中創建一個粉絲頁即可。

接著將我所有的app 加入我的business中

接著再使用facebook 範例的sample code
new Request(
    session,
    "/me/ids_for_business",
    null,
    HttpMethod.GET,
    new Request.Callback() {
        public void onCompleted(Response response) {
            /* handle the result */
        }
    }
).executeAsync();
就會取得相關的資料了,以下是我這邊取得的結果

  1. {
    • "id":"149102310",
    • "app":{
      • "id":"test1_fb_id",
      • "namespace":"test1",
      • "name":"test1"
      }
    },
  2. {
    • "id":"10202864123396999",
    • "app":{
      • "id":"test2_fb_id",
      • "name":"test2"
      }
    }
其中149102310為app test1 的scope app id ,10202864123396999 為app test2的scope app id,
這樣我們就可以match到該使用者是否有在我其他的app中使用facebook登入過了。


附註:
我們也可以使用 "/{friend_id}/ids_for_business" 來做朋友Id的mapping,這個功能目前是可用,
希望過陣子還是可以使用(極度不信任facebook api XD)

沒有留言:

張貼留言