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

God*_*oge 5 google-api firebase 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;
// ...
});
Run Code Online (Sandbox Code Playgroud)

无论如何我可以使用firebase身份验证获取google api的刷新令牌。我在 Firebase 的文档中找不到有关此问题的任何信息。我也知道该User对象还包含一个refreshToken. 我是否可以使用refreshTokenfirebase生成一个新access_token的谷歌API?

boj*_*eil 8

Firebase 身份验证目前专注于 AuthN 而不是 AuthZ。它们在登录时不管理 OAuth 令牌。所有 OAuth 刷新令牌都将被丢弃,仅返回初始 OAuth 访问令牌。如果您持续需要 Google 刷新令牌或 Google 访问令牌,请考虑使用GApi获取 Google ID 令牌/访问令牌,然后使用该令牌登录 Firebase。

function onGoogleSignIn(googleUser) {
  var googleIdToken = googleUser.getAuthResponse().id_token;
  firebase.auth().signInWithCredential(
    firebase.auth.GoogleAuthProvider.credential(googleIdToken));
}
Run Code Online (Sandbox Code Playgroud)

您将始终能够以这种方式从 Google 登录库获取 Google OAuth 访问令牌。