以上圖的Facebook Test Users為例,建立完的使用者可以由parse.com的Data中看到,不過authData卻只顯示了Facebook的ID,因此我們可以先透過API Console來對users作存取,這裡要注意的是Use Master Key記得要選Yes,否則會沒有權限看authData的內容;users後面的參數為objectId,若不放置則會列出全部符合的資料。
在Response中的內容:
{ "authData": { "facebook": { // 不要想對這組access_token亂來,因為是test user XD "access_token": "CAAMCk3Pv7SkBAEjfvRaG4SrC8k3CXak1843iisuUJiIK9gYV9PNFRraXi9gxYVBJO83zsvzFO91dcACevKwinxAVPNCUeEv0UPWsmv7DZBlqPjtZCCnEBcMBKpU7ikoj9OKo1ZCwzi3wmTycsB2avHT1SiBxLUF5ZAHTaT9XDNtz1phGZCk0lltOY5agj0JGQ9ezNGmOsvUmdpKFASx5K", "expiration_date": "2015-08-15T17:52:46.495Z", "id": "118563748477765" } }, "createdAt": "2015-06-16T17:52:48.623Z", "name": "Super Mario", "objectId": "wmVm7Qb1Fc", "sessionToken": "jEKKzfbDcIN0CmBIvsdZR9Aoc", "updatedAt": "2015-06-17T07:57:08.934Z", "username": "3GwDpgmuqmfnyGYINNI27W9fO" }已經知道存放在哪裡之後,接下來就是利用cloud code function建立資料存取了!在這裡我用名字與圖片作範例,參考了stackoverflow這篇的回答稍微修改了一下:
當然,別忘記userMasterKey...
Parse.Cloud.define("facebook", function(request, response) { Parse.Cloud.useMasterKey(); new Parse.Query(Parse.User).get(request.params.user_id).then(function(user) { var authData = user.get("authData"); // Quit early for users who aren't linked with Facebook if (authData === undefined || authData.facebook === undefined) { response.success(null); return; } return Parse.Cloud.httpRequest({ method: "GET", url: "https://graph.facebook.com/me", params: { access_token: authData.facebook.access_token, fields: "name, friends", }, }); }).then(function(json) { response.success(json.data); // Promises will let you bubble up any error, similar to a catch statement }, function(error) { response.error(error); }); });在Express中call建立好的cloud host function:
app.get('/test', fbLogin, function(req, res) { var user = Parse.User.current(); Parse.Cloud.run('facebook', { user_id: user.id }, { success: function(results) { res.send('Congrats, you are logged in, ' + results.name + '!' + ''); }, error: function(error) { console.log("error :" + error); } }); });若是成功的話就能在自己的URL中看到如下圖的結果了!
UPDATE:使用parse.com Cloud Code Hosting進行Facebook登入存取 - 3