我使用JS库调用firebase.auth().signInWithEmailAndPassword(email, password)并获取一个User对象.该User对象包含一个refreshToken.
我curl 'https://docs-examples.firebaseio.com/rest/saving-data/auth-example.json?auth=TOKEN'用来拨打Firebase.
令牌最终会过期.为了使它看起来像应用程序(iOS和macOS)具有持久登录,我想刷新令牌,我如何使用REST或JS库?我在文档中找不到任何允许我使用它refreshToken来获取新内容的调用token.
我使用" signInWithCustomToken() "来验证firebase用户.
此令牌将在1小时后到期.
Firebase建议令牌到期时间为1小时.如果我们在使用"php-jwt"库创建自定义令牌时修改过期,则firebase会抛出异常"自定义令牌格式不正确.请查看文档".
在搜索解决方案时,我发现以下主题 - " Firebase Android身份验证失败:expired_token(身份验证令牌已过期) "
但是" onTokenRefresh() " 返回的刷新令牌对我不起作用.
刷新此自定义令牌的过程是什么?
要么
有没有办法将手动到期设置为自定义令牌?
我有一个 firebase 项目,我试图从我的 rails 服务器进行身份验证,使用库 ruby-jwt 创建自定义令牌,如文档中所说,但我不断收到相同的错误:
auth/invalid-custom-token,自定义令牌格式不正确。请检查文档。
该credentials.json是我在谷歌做出控制台服务帐户,UID是从前端向API发送。
def generate_auth_token(uid)
now_seconds = Time.now.to_i
credentials = JSON.parse(File.read("credentials.json"))
private_key = OpenSSL::PKey::RSA.new credentials["private_key"]
payload = {
:iss => credentials["client_email"],
:sub => credentials["client_email"],
:aud => 'https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit',
:iat => now_seconds,
:exp => now_seconds+(60*60), # Maximum expiration time is one hour
:uid => uid.to_s,
:claims => {:premium_account => true}
}
JWT.encode(payload, private_key, 'RS256')
end
Run Code Online (Sandbox Code Playgroud)
在 jwt.io 中看起来像这样
{
"iss": "defered@defered.iam.gserviceaccount.com",
"sub": "defered@defered.iam.gserviceaccount.com",
"aud": "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
"iat": 1486824545,
"exp": 1486828145,
"uid": "4",
"claims": {
"premium_account": …Run Code Online (Sandbox Code Playgroud) 我将 Firebase 身份验证添加到我的 Reactjs(和 Redux)网络应用程序中,一切正常。我使用电子邮件/密码登录,并调用 firebase.auth().signInWithEmailAndPassword ,该方法在重新加载、选项卡更改等时持续存在。但是,大约一个小时后,身份验证会话似乎过期,并且 currentUser 设置为 null。感觉 Firebase 控制台中应该有一个设置,但是在搜索之后,我找不到任何东西。
任何帮助将非常感激!