繼上一篇成功截取出使用者資料後,發現除了基本資料外,朋友、按讚的資訊等資料其實都抓不出來,原因是因為沒有給予app存取這些資訊的權限。要求權限的話可以透過OAuth來索取access token,其範例網址如下:
https://www.facebook.com/dialog/oauth?client_id={appId}&redirect_uri={redirectURI}
這是一個截取基本權限的網址,appId指的是每一個app獨立的ID,而redirectURI是當OAuth通過後,會送發一串code到這個redirectURI去,而若需要要求其他權限,可以增加scope屬性如下:
https://www.facebook.com/dialog/oauth?client_id={appId}&redirect_uri={redirectURI}&scope={accessPermissions}
這個scope以逗號作為分隔,填在裡面的將會在facebook dialog中要求權限。
講了這麼多,但以第一篇中使用了parse-facebook-user-session該怎麼修改呢?稍微翻了它的source code後發現它在實作上並沒有保留scope欄位,因此我便把scope加上去了,可以由此瀏覽:parse-facebook-user-session
UPDATE:原Repository已經將此功能merge上去,直接使用原本的即可
UPDATE:原Repository已經將此功能merge上去,直接使用原本的即可
使用方式的話則與先前的沒什麼差別,只是可以選擇多填一個scope欄位,範例如下:
app.use(parseFacebookUserSession({ clientId: 'YOUR_FB_CLIENT_ID', appSecret: 'YOUR_FB_APP_SECRET', redirectUri: '/login', scope: 'user_friends,user_likes', // 要求friends與like資訊 }));
至於有哪些權限可以要求,可以當https://developers.facebook.com/tools/explorer/中,點選Get Access Token來參考,並且在下面做測試。
不過要注意的有像是user_friends這項,如果在API v2.0以上的版本上要求資訊的話,只會列出同樣有授權此app的好友出來,開了幾個test users測試的確如此:
很可憐沒有朋友授權此APP:
有朋友也授權此APP:
至於怎麼得到test user的access token,我是利用parse.com的API Console,Endpoint填入users且Use Master Key改成Yes,send request後即可在response中看到access token,即可複製此token到https://developers.facebook.com/tools/explorer/中做測試,如下圖。
{ "id": "104342733239984", "name": "Hello world", "friends": { "data": [], "summary": { "total_count": 1 } } }可以看到summary中,total_count為1,但data中無資料。
有朋友也授權此APP:
{ "id": "1421116644879628", "name": "Doraemon Cat", "friends": { "data": [ { "name": "Open Graph Test User", "id": "1414470195545509" }, { "name": "Monkey D Luffy", "id": "100347703641647" } ], "paging": { "next": "https://graph.facebook.com/1421116644879628/friends?limit=25&offset=25&__after_id=enc_AdAMpWdRxSLZAvND6bEd0htyyGsZAZBvzP6jzoAIZBKS9EiBSndZCNZC3S1AC5TEYchbuuBSV0xvg7ziwO4Cdt843yZApF" }, "summary": { "total_count": 2 } } }可以看到此test user有兩個朋友也都有安裝此app。
至於怎麼得到test user的access token,我是利用parse.com的API Console,Endpoint填入users且Use Master Key改成Yes,send request後即可在response中看到access token,即可複製此token到https://developers.facebook.com/tools/explorer/中做測試,如下圖。
沒有留言:
張貼留言