Firebase / Google登录身份验证:未在Gmail帐户

时间:2018-01-13 13:29:17

标签: javascript firebase firebase-authentication google-signin google-authentication

我正在使用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还会为商家帐户返回电子邮件地址的默认照片,因此我假设必须为此商家帐户设置一些特定的隐私设置,以防止照片被分享。

是否有人已经遇到过这个问题,或者有任何想法:

  • 要在gmail商家帐户中更改设置以启用个人资料照片共享?
  • 如果可以建立同意屏幕,则征得用户同意与应用程序共享其基本个人资料信息(我知道当应用仅需要基本个人资料信息时Google最近删除了同意屏幕 - 姓名,电子邮件,照片,..-)?
  • 更多' hacky'从网上获取照片的方法?
  • 还有其他任何建议吗?

1 个答案:

答案 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。您只需要添加一个检查以确保在尝试获取网址之前有用户数据。我也在使用我的企业帐户。