Oauth “如何刷新谷歌”;accessToken“;使用;refreshToken“;论客户

Oauth “如何刷新谷歌”;accessToken“;使用;refreshToken“;论客户,oauth,oauth-2.0,firebase-authentication,google-oauth,expo,Oauth,Oauth 2.0,Firebase Authentication,Google Oauth,Expo,我有一个React原生应用程序,它使用Expo.Google.logInAsync通过谷歌登录。这将返回一个accessToken(1小时后过期)和一个refreshttoken 我正在将此accessToken传递给Firebase Web SDK: const cred = firebase.auth.GoogleAuthProvider.credential(null, accessToken); await firebase.auth().signInWithCredential(cre

我有一个React原生应用程序,它使用
Expo.Google.logInAsync
通过谷歌登录。这将返回一个
accessToken
(1小时后过期)和一个
refreshttoken

我正在将此
accessToken
传递给Firebase Web SDK:

const cred = firebase.auth.GoogleAuthProvider.credential(null, accessToken);
await firebase.auth().signInWithCredential(cred).catch(console.error);
const idToken = await firebase.auth().currentUser.getIdToken(true).catch(console.error);
我应该如何使用这个Google
refreshToken
来保持Firebase
idToken
的有效性并在一小时后登录

我是否应该在下面提出请求,并使用凭据重新连接Firebase
登录

POST/oauth2/v4/token HTTP/1.1
主持人:www.googleapis.com
内容类型:application/x-www-form-urlencoded
客户识别码=&
客户机密=&
刷新令牌=&
授予\类型=刷新\令牌
我可以从谷歌API认证页面获取我的
客户机密。大多数人说,如果可能的话,可以将其保留在服务器上,但也有人说,如果需要,还可以将其嵌入到客户机代码中


是设计用于手机应用程序客户端代码的
客户端密码吗?Firebase会话是不确定的。Firebase Auth在登录后返回ID令牌和刷新令牌,每次ID令牌过期时,刷新令牌用于获取新的ID令牌。客户端SDK将自行处理刷新。您只需调用
getIdToken()
,如果未过期,它将返回缓存的ID令牌,或者使用基础刷新令牌检索新的ID令牌。此处不需要您所指的Google OAuth刷新令牌。

Firebase会话是不确定的。Firebase Auth在登录后返回ID令牌和刷新令牌,每次ID令牌过期时,刷新令牌用于获取新的ID令牌。客户端SDK将自行处理刷新。您只需调用
getIdToken()
,如果未过期,它将返回缓存的ID令牌,或者使用基础刷新令牌检索新的ID令牌。这里不需要您所指的Google OAuth刷新令牌。

需要澄清的是,Google OAuth令牌现在无法通过Firebase Auth flow刷新?

需要澄清的是,Google OAuth令牌现在无法通过Firebase Auth flow刷新?

谢谢,先生,非常有意义@bojeil如果要刷新访问令牌而不是id令牌,该怎么办?Firebase Auth不颁发访问令牌。如果您指的是来自您登录的IDP(谷歌、Facebook等)的第三方访问令牌,Firebase Auth在登录后不会管理这些令牌。谢谢,先生,这非常有意义@bojeil如果要刷新访问令牌而不是id令牌,该怎么办?Firebase Auth不颁发访问令牌。如果您指的是来自您登录的IDP(谷歌、Facebook等)的第三方访问令牌,Firebase Auth在登录后不会管理这些令牌。
POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=<your_client_id>&
client_secret=<your_client_secret>&
refresh_token=<refresh_token>&
grant_type=refresh_token