如何正确使用通过Firebase身份验证获得的Facebook令牌?
问题描述:
当人想通过Facebook注册时,我试图获得一个人的名字和姓氏,但想知道是否会有一些安全问题。如何正确使用通过Firebase身份验证获得的Facebook令牌?
基础上document from Firebase的answer from Stack Overflow和explanation 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);
}
});
不客气 – bojeil
你的答案是什么,我找谁! g为。谢谢!顺便说一下,additionalUserInfo有时可能未定义吗?我看到console.log的结果里面有什么,但additionalUserInfo没有定义。 – James
我不确定这一点,但我怀疑它可能与我用于注册的相关: var provider = new firebase.auth.FacebookAuthProvider(); provider.addScope('public_profile'); – James