如何正确使用通过Firebase身份验证获得的Facebook令牌?

问题描述:

当人想通过Facebook注册时,我试图获得一个人的名字和姓氏,但想知道是否会有一些安全问题。如何正确使用通过Firebase身份验证获得的Facebook令牌?

基础上document from Firebaseanswer from Stack Overflowexplanation about parameters from Facebook website,我写了下面的代码:

firebase.auth().getRedirectResult().then(function(result) { 
    var token = result.credential.accessToken; 
    FB.api('/me', {fields: 'last_name', access_token: token}, function(response) { 
    console.log(response); 
    }) 
}) 

我主要关注的是,根据Facebook的,它说:

一个参数请注意access_token,您可以使用它来使用页面访问令牌进行API调用。 应用程序访问令牌不应该在此SDK中使用,因为它是客户端,并且您的应用程序密钥将被公开。

它看起来像我不能用这种方法来获取用户的名字和姓氏。

与火力地堡4.0.0开始,额外的IdP数据将直接型UserCredential的结果返回。你不应该需要进行额外的API调用Facebook来得到像第一/姓氏数据:

firebase.auth().getRedirectResult().then(function(result) { 
    if (result.user) { 
    // Additional user info like first name, last name, 
    // Facebook account url, gender, etc. 
    console.log(result.additionalUserInfo.profile); 
    // Facebook access token returned in the process 
    // for the scopes requested. 
    console.log(result.credential.accessToken); 
} 

});

+0

不客气 – bojeil

+0

你的答案是什么,我找谁! g为。谢谢!顺便说一下,additionalUserInfo有时可能未定义吗?我看到console.log的结果里面有什么,但additionalUserInfo没有定义。 – James

+0

我不确定这一点,但我怀疑它可能与我用于注册的相关: var provider = new firebase.auth.FacebookAuthProvider(); provider.addScope('public_profile'); – James