如何使用Firebase身份验证获取google api的刷新令牌

时间:2018-04-19 19:49:22

标签: firebase google-api firebase-authentication

来自firebase的文档

firebase.auth().signInWithPopup(provider).then(function(result) {
// This gives you a Google Access Token. You can use it to access the 
Google API.
var token = result.credential.accessToken;
// The signed-in user info.
var user = result.user;
// ...
}).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身份验证获取google api的刷新令牌。我在Firebase的文档中找不到任何关于此问题的信息。我也知道User对象还包含refreshToken。我可以使用refreshToken中的firebase为Google API制作新的access_token吗?

1 个答案:

答案 0 :(得分:2)

Firebase Auth目前专注于AuthN而不是AuthZ。他们在登录时不管理OAuth令牌。所有OAuth刷新令牌都将被丢弃,并且只返回初始OAuth访问令牌。如果您需要Google刷新令牌或Google访问令牌,请考虑使用GApi library获取Google ID令牌/访问令牌,然后使用该功能登录Firebase。

function onGoogleSignIn(googleUser) {
  var googleIdToken = googleUser.getAuthResponse().id_token;
  firebase.auth().signInWithCredential(
    firebase.auth.GoogleAuthProvider.credential(googleIdToken));
}

您始终可以通过Google登录库获取Google OAuth访问令牌。