无法在Ionic平台上通过firebase3登录获取gmail用户displayname

时间:2016-07-05 03:03:38

标签: ionic-framework firebase firebase-authentication

我正在使用firebase signinwithcredential处理google auth。我首先使用cordovaoath获取id令牌并使用firebase签名。我在我的代码中特别指出我想获取displayName,但它总是返回null。我想知道有人遇到过同样的问题吗?

enter image description here

   this.loginWithGoogle = function loginWithGoogle() {
    $cordovaOauth.google("mygoogleclient id here", ["https://www.googleapis.com/auth/calendar","https://www.googleapis.com/auth/userinfo.email", 
      "https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/plus.me", "https://www.googleapis.com/auth/plus.login", "https://www.googleapis.com/auth/drive"]).then(function (result) {
        // "email", "profile",
        console.log("first come here to oath");
        console.log("Response Object -> " + JSON.stringify(result));

        var unsubscribe = firebase.auth().onAuthStateChanged(function (firebaseUser) {

            unsubscribe();
            // Check if we are already signed-in Firebase with the correct user.
            // Build Firebase credential with the Google ID token.
            var credential='';
             credential = firebase.auth.GoogleAuthProvider.credential(
                result.id_token);

            // Sign in with credential from the Google user.
            firebase.auth().signInWithCredential(credential).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;
            });
        });


    }, function (error) {
        console.log("Error -> " + error);
    });




};

我回来的结果的透视

enter image description here

1 个答案:

答案 0 :(得分:0)

如果要请求其他范围,则应该请求访问令牌,而不是ID令牌。

要修复您的代码,请更改此行:

var credential = firebase.auth.GoogleAuthProvider.credential(
                            null, result.access_token); // <- access_token