0
votes

I am using login with facebook utility of parse in my android application. Login with facebook utility works fine. it inserts only "userName" and "authData" column of "User" table.

I am getting name and email of facebook user using graph API of facebook.

Question -

How do we store "fullName" and "email" of facebook user into parse?

Thanks in advance!

1

1 Answers

0
votes

I was able to write user Facebook details in CloudCode by doing the following:

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.')
    }
});

});