我正在使用Firebase / Google登录身份验证来记录我的应用中的用户。身份验证与Gmail帐户完美配合 - 但是,对于我的客户帐户(具有商家Gmail帐户(.. @ company.com)),身份验证可以正常运行,但用户个人资料图片不会共享(用户对象随之返回默认图片,如下所示: https://lh3.googleusercontent.com/-9Me77eEe8m0/AAAAAAAAAAI/AAAAAAAAAAA/0uO0KAv-PMQ/photo.jpg )。
有关信息,我使用的是非常标准的signInWithPopup方法:
var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider)
.then((credential) => {
var authState = credential.user
updateUserData() // Updating user's data })
.catch(error => console.log(error))
所以我尝试通过直接在网上查找个人资料照片来解决这个问题,而不是通过使用基于身份的网址从身份验证中获取,例如:
http://picasaweb.google.com/data/entry/api/user/?ALT = JSON
但是json还会为商家帐户返回电子邮件地址的默认照片,因此我假设必须为此商家帐户设置一些特定的隐私设置,以防止照片被分享。
是否有人已经遇到过这个问题,或者有任何想法:
答案 0 :(得分:1)
我好几天都被困在同一个问题上。这就是我设法获得正确的照片网址的方法!
var user = firebase.auth().currentUser;
if (user != null) {
user.providerData.forEach(profile => {
console.log(profile.photoURL);
}); //this will give you all the urls once there is user data
}
当firebase仍在获取所有用户信息时,您很可能正在加载虚拟URL。您只需要添加一个检查以确保在尝试获取网址之前有用户数据。我也在使用我的企业帐户。