我们如何在解析中存储facebook用户的详细信息?

时间:2014-11-20 08:05:58

标签: android facebook facebook-graph-api parse-platform

我在我的Android应用程序中使用登录与facebook实用程序的解析。用facebook实用程序登录工作正常。它只插入“用户”表的“userName”和“authData”列。

我使用facebook的图形API获取facebook用户的姓名和电子邮件。

问题 -

我们如何将facebook用户的“fullName”和“email”存储到解析中?

提前致谢!

1 个答案:

答案 0 :(得分:0)

通过执行以下操作,我能够在CloudCode中编写用户Facebook详细信息:

Parse.Cloud.beforeSave(Parse.User, function (request, response) {

// Use Master Key
Parse.Cloud.useMasterKey();

// Pull User Object
var User = request.object;

// User Check
if (!User) {
    // Not allowed
    response.error();
    return;
}

// For some reason, pulling authData fails. A try catch helps the TypeError that may happen
try {
    var authData = User.get('authData');
    var access_token = authData.facebook.access_token;
} catch(e) {
    var access_token = null;
}

Parse.Cloud.httpRequest({
    url:'https://graph.facebook.com/v2.1/me?fields=picture.height(50).width(50),email,first_name,last_name,friends.limit(5000),name,gender&access_token='+access_token,

    success:function (httpResponse) {
        // Success

        var facebookIds = [];

        try {
            var facebookFriends = httpResponse.data.friends.data;
        } catch (e) {
            var facebookFriends = [];
        }

        var promise = _.each(facebookFriends, function(facebookFriend) {
            facebookIds.push(facebookFriend.id);
        });

        Parse.Promise.when([promise]).then(function () {

            if (request.object.existed() == false) {
                User.set("displayName", httpResponse.data.name);
            }

            // Updating user object
            User.set("facebookFriends", facebookIds);
            User.set("fbEmail", httpResponse.data.email);
            User.set("profileThumb", httpResponse.data.picture.data.url);
            User.set("facebookId", httpResponse.data.id);
            User.set("gender", httpResponse.data.gender);

            response.success();

        });

    },
    error:function (error){
        // Error
        response.error('Server error.')
    }
});

});