Firebase使用Facebook登录 - 如何获取更大的个人资料图片 - JavaScript

3

我正在尝试获取用户的大尺寸个人资料图片,但是无法实现。在登录后,我获得的 authFacebook.user.photoURL 只包含 100 * 100 像素的照片。

我也尝试过

graph.facebook.com/{{authFacebook.user.uid}}/picture?width=800  

但是它没有起作用。

有任何想法吗?谢谢。

login: function() {
        // Create facebook auth provider and add scope
        var provider = new firebase.auth.FacebookAuthProvider()

        // Sign in using facebook provider
        return firebase.auth().signInWithPopup(provider).then(function(authFacebook) {
            accessToken = authFacebook.credential.accessToken;
            localStorage.setItem('accessToken', accessToken);
            var user = Auth.getProfile(authFacebook.user.uid).$loaded();

            user.then(function(profile) {
                if (profile.name == undefined) {
                    //now authFacebook.user.photoURL contains 100*100 px
                }
            }).catch(function(error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // The email of the user's account used.
        var email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        var credential = error.credential;
        // ...
      });
        })
    },

你能分享最终的代码吗?我也在使用带有Firebase的Facebook弹出窗口。 - Manspof
1个回答

4
您需要从用户providerData对象中获取Facebook用户ID: https://graph.facebook.com/{{authFacebook.user.providerData[fbIndex].uid}}/picture?width=800 该链接可用于获取Facebook用户的头像。请注意,保留HTML标记。

谢谢,有效!只是一个问题。fbIndex的意思是什么?当可能有多个索引时呢? - user2837319
1
如果您只有一个提供者,那么它应该是0,但 Firebase Auth 允许您链接其他提供者。 您可以拥有一个 Firebase 用户,并使用 Google、Facebook、Twitter、GitHub 和 Password 提供程序进行链接。 用户可以使用这些链接的任何身份验证提供程序登录。 这就是为什么 providerData 数组中可能会有多个元素的原因。 - bojeil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接