為了因應FaceBook在今年所做出的改版,爬了許多文,終於找出折衷的辦法.....

主要的困擾是FB在改版後,之後創建的APP將針對每一位使用者所使用的每一個APP給予不同的UID。

也就是說,以前FB使用者無論點擊哪一個APP,FB回傳的都是同一個UID。但是之後會變成一個使用者會因為不同的APP回傳不同的UID過來。

變得說無法用以前給的UID去跟新的APP做比對。

 

幸好,FB下面有個Business Manager(企業管理平台)。

它可以將你所指定的APP組成一個群組,再去使用FB API Ver2.0提供的程式碼做處理即可。

詳細請參閱FB說明:https://www.facebook.com/help/113163272211510/

Business API:https://developers.facebook.com/docs/apps/for-business/

 

PHP SDK

原本的程式為 $facebook -> api("/me/")

改成

$response = $facebook -> api("/me/ids_for_business");
$data = $response["data"];

其中,$data為一個陣列,陣列組合為使用者的ID+APP的資料

array() { [0]=>  { ["id"]=> string ["app"]=> array(3) { ["name"]=> string ["namespace"]=> string() ["id"]=> string()} } }

再用foreach做處理或比對即可。

如果怕出先用戶驗證錯誤的話,建議寫沒有使用者資訊則回到頁面重跑,直到有資料出現為止。(好暴力的做法....) 

 

 

2014.05.23 更新

在跑程式的過程中,我是先一口氣加了將近100個APP下去。

其中大約有63個是我按過的。

跑完發現......OMGD陣列只給25個啊!!!!!

也就是說,FB回傳陣列一次只會給你大約25筆.....

最簡單的方法就是直接帶參數GET過去

$response = $facebook -> api("/me/ids_for_business?limit=1000");即可

 

以下為回傳的正確模樣

{
"data": [{"id": "", "app": {"name": "", "namespace": "", "id": ""}}, ],
"paging": {"previous" : "","next": "", "cursors": {"before": "", "after": ""}}
}

arrow
arrow
    全站熱搜

    七爺 發表在 痞客邦 留言(0) 人氣()