用facebook登录后如何询问额外信息?

时间:2015-03-28 16:39:17

标签: meteor meteor-accounts

我已经设置了基本的流星应用程序,我可以使用facebook登录。我想在实际创建用户之前询问有效的电话号码。你如何在流星中实现这一目标? 登录工作流程:

Login-page =>点击“使用facebook登录”=>用户授予app =>的权限重定向回应用并询问电话号码=>创建用户

我正在使用account-facebook及相关套餐。

由于

1 个答案:

答案 0 :(得分:3)

自Facebook API doesn't support access to the user phone以来,您不能只扩展requestPermission数组来请求user_phone。

让我们说你有这个简单,登录Facebook按钮

   Meteor.loginWithFacebook({ requestPermissions: ['email']},
    function (error) {
       if (error) {
        return console.log("There was an error : " error.reason);
      }else{
        //if there is no error, lets redirect the new user to a new template
        Router.go('/registerForm')
      }
    });

现在,如果登录成功,您可以将用户重定向到registerForm

注册表单HTML

<template name="registerForm">
  <!-- Simple Register Form asking for phone number -->
</template>

JS活动

 Template.registerForm.events({
    'submit registerForm':function(e,t){
       //code to get the input value
       var userPhoneNumber = t.$('#phoneInputValue').val()
       Meteor.users.update(Meteor.userId(),{$set:{'profile.phoneNumber':userPhoneNumber,'profileNumber':true}})
     }
  })

您是否设置了布尔值profileNumber?有了这个,你可以使用模板助手来确保和拒绝用户填写registerForm模板(只是一个额外的安全性)的访问权限,你可以使用Accounts.onCreateUser在服务器端默认设置它像这样的方法。

Accounts.onCreateUser(function(options, user) {
       if(!options || !user) {
        console.log('error creating user');
        return;
    } else {
        if(options.profile) {
            user.profile.userPhoneNumber = false;
        }
    }
    return user;
});