Facebook graph api 设置用户';s在Facebook上的电子邮件注册Parse.com
我正在使用Parse.com并尝试设置用户注册Facebook 首次使用Facebook进行身份验证时,会调用beforeSave来获取其他用户详细信息:Facebook graph api 设置用户';s在Facebook上的电子邮件注册Parse.com,facebook-graph-api,parse-platform,Facebook Graph Api,Parse Platform,我正在使用Parse.com并尝试设置用户注册Facebook 首次使用Facebook进行身份验证时,会调用beforeSave来获取其他用户详细信息: function UserBeforeSave(request, response){ var user = request.object, auth = user.get('authData'); // check if user is newly registered if (!user.existed()) {
function UserBeforeSave(request, response){
var user = request.object,
auth = user.get('authData');
// check if user is newly registered
if (!user.existed()) {
// Check if a user signs up with facebook
if (Parse.FacebookUtils.isLinked(request.object)) {
// Query Graph API for user details
Parse.Cloud.httpRequest({
url:'https://graph.facebook.com/v2.2/me?access_token=' + auth.facebook.access_token,
success:function(httpResponse){
// Map facebook data to user object
if (httpResponse.data.first_name) request.object.set('first_name', httpResponse.data.first_name);
if (httpResponse.data.last_name) request.object.set('last_name', httpResponse.data.last_name);
if (httpResponse.data.email) request.object.set('email', httpResponse.data.email);
response.success();
},
error:function(httpResponse){
console.error(httpResponse);
response.error();
}
});
} else {
response.success();
}
} else {
response.success();
}
}
问题是,该电子邮件线路实际上中断了操作并出现错误:
Can't modify email in the before save trigger
我尝试将此代码移动到afterSave,但authdata在那里不可用,因此很难调用FBAPI。因此,该电子邮件目前为空
我假设这是将Parse与Facebook API集成的一个非常常见的用例,那么在集成过程中是否缺少自动获取电子邮件的功能?我只是在客户端执行图形查询并在那里设置电子邮件。这个很好用
您想在用户上的before/afterSave中这样做有什么原因吗?我认为从云代码中查询Graph API更安全,因为我可以更好地控制流程。在注册facebook之前,您如何设置用户的电子邮件?还是在身份验证后设置?在登录调用的成功块中。