我想知道我由 Firebase Admin SDK .createCustomToken(uid) 创建的令牌是否应该存储在某处。
考虑以下情况:
客户端:新用户A注册
服务器:token = fbSDK.createCustomToken(uid)
客户端:使用此令牌通过 Firebase 进行身份验证
稍后用户A注销并重新登录
我应该查找该用户保存的令牌吗?
或者我应该再次使用 fbSDK.createCustomToken(uid) 并且此令牌将与之前的令牌相同或至少附加到之前创建的 firebase 用户 A?
提前致谢。
我正在从电子邮件+密码过渡并将 Firebase Auth SignInWithPhoneNumber 集成到我的 React Web 应用程序中,我对如何从
1. 提交电话号码
到 2. 提交代码验证感到困惑。
在我看来,firebase 函数 .signInWithPhoneNumber 想要同时获得电话 # + 验证码,据我们所知,这并不是现实生活中的运作方式。
那么,如何实现提示用户输入验证码呢?
handleSignUp = event => {
event.preventDefault();
window.appVerifier = new firebase.auth.RecaptchaVerifier(
"recaptcha-container",
{
size: "invisible"
}
);
const appVerifier = window.appVerifier;
firebase
.auth()
.signInWithPhoneNumber(this.state.phoneNumber, appVerifier)
.then(function(confirmationResult) {
console.log("Success");
// SMS sent. Prompt user to type the code from the message, then confirm
return confirmationResult.confirm(verificationId);
})
.catch(function(error) {
console.log("Error:" + error.code);
});
};
Run Code Online (Sandbox Code Playgroud)
报名表:
<TextField
name="First name"
value={this.state.firstName}
/>
<TextField
name="lastName" …Run Code Online (Sandbox Code Playgroud) 我使用 firebase JS sdk 将音频文件上传到 firebase-storage。发生这种情况时,我需要根据进行上传的经过身份验证的用户来处理它(我将其上传到其他地方进行处理)。这意味着我需要在通过存储规则验证 uid 后才能访问该 uid,以确保其安全。
在研究这个问题时,我发现了一些解决方法,例如使用元数据发送用户的 ID 令牌,但在我看来这是一个坏主意,因为它可能被滥用。
我发现这个问题也几乎正是我的问题。我链接的问题已经存在一年多了,所以我认为值得再次询问。
我认为主要原因是存储规则,它确实可以访问 uid ( https://firebase.google.com/docs/storage/security/user-security )。如果我可以使用那里的 uid 来允许/禁止访问,我假设也可以在我的 onFinalize 触发器中访问 uid。我只是似乎无法找到如何。
firebase firebase-authentication google-cloud-functions firebase-storage
我正在使用 Angular 和 AngularFire 开发一个应用程序。当用户使用电子邮件和密码注册并且用户在其电子邮件中收到验证电子邮件时。当我将电子邮件地址验证模板中的操作 URL 更改为“ http://localhost:4200/verify-email-address ”时,用户的电子邮件验证仍然为 false,如果我使用默认 URL,则它将返回 true。如何设置自定义本地模板以向用户显示他/她的电子邮件已验证并重定向该用户以再次登录。
当分配自定义声明时,客户端中的用户必须注销并登录,然后声明才会显示在他们的帐户上。我今天花了一整天的时间试图找出为什么我的声明没有生效,结果用户必须重新登录才能让声明无缘无故地显示 LOL rip 我一天中的 5 个小时。我可以添加什么内容来刷新用户信息而无需重新登录吗?
以下是我的代码,用于检查用户是否已经登录。
firebaseAuth = FirebaseAuth.getInstance();
currentUser = firebaseAuth.getCurrentUser();
Run Code Online (Sandbox Code Playgroud)
如果当前用户有一些数据,我得到Token
if(currentUser != null){
String token = currentUser.getIdToken(false).getResult().getToken();
}
Run Code Online (Sandbox Code Playgroud)
在这里,它并不总是崩溃,大多数时候都会出现以下错误消息。
Method threw 'java.lang.IllegalStateException' exception.
Task is not yet complete
Run Code Online (Sandbox Code Playgroud)
我使用的代码与 firebase 在其文档中使用的代码完全相同。
有时,当我尝试登录时,它也会崩溃,并出现与我上面分享的相同错误消息。
firebaseAuth.signInAnonymously()
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if(user != null){
String userId = user.getUid();
String token = user.getIdToken(false).getResult().getToken();
}
} else {
Log.w("", "signInAnonymously:failure", task.getException());
}
}
});
Run Code Online (Sandbox Code Playgroud) 我收到类似的错误
未定义名称“AuthException”
当我尝试在我的 Flutter 应用程序中使用它时。
Future<bool> login({phoneNr, BuildContext context}) async {
_auth.verifyPhoneNumber(
phoneNumber: phoneNr,
timeout: Duration(seconds: 60),
verificationCompleted: (AuthCredential credential) async {
UserCredential result = await _auth.signInWithCredential(credential);
User user = result.user;
if (user != null) {
Navigator.pushNamed(context, HomeScreen.id, arguments: user);
}
},
verificationFailed: (AuthException exception) // THIS LINE HERE
);
}
Run Code Online (Sandbox Code Playgroud)
我知道,他们可能已经将名称更改为“User”,就像将“FirebaseUser”更改为“User”一样;但他们的正式文档仍然显示“AuthException”是一个有效的类。然而,尽管导入并升级了所有预期的包,我仍然遇到相同的错误。有什么解决办法吗?
我的 Flutter 应用程序已更新到最新版本的 Flutter,并且我将 firebase_messaging 添加到我的应用程序中。完成此操作后,该应用程序在模拟器上运行良好,但当我尝试在实际 iOS 设备上运行它时崩溃,并出现以下错误:
-[NSNull length]: unrecognized selector sent to instance 0x1ddcb9ee0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull length]: unrecognized selector sent to instance 0x1ddcb9ee0'
*** First throw call stack:
(0x18c8959d8 0x1a0bfeb54 0x18c7a5bbc 0x18c89801c 0x18c899f8c 0x102deadcc 0x102dec698 0x102deb1a8 0x102dea8bc 0x18c4cd298 0x18c4ce280 0x18c4aa4f0 0x18c4aafdc 0x18c4b4800 0x1d4f3b5a4 0x1d4f3e874)
libc++abi.dylib: terminating with uncaught exception of type NSException
* thread #5, queue = 'com.google.firebase.auth.globalWorkQueue', stop reason = signal SIGABRT
frame #0: 0x00000001b86f484c libsystem_kernel.dylib`__pthread_kill + 8
libsystem_kernel.dylib`__pthread_kill: …Run Code Online (Sandbox Code Playgroud) ios firebase firebase-authentication flutter firebase-cloud-messaging
我使用 google_sign_in 和 firebase_auth。这在模拟器中工作得很好,在编译 apk 并直接在真实设备上尝试时也工作得很好,但是当我将其发布到 Google Play 并从中安装我的应用程序时,它就不起作用了。
我没有收到任何错误。出现登录信息,当我单击其中一个帐户时,它会关闭而不执行任何操作。
从 Google 获取凭据后,我使用 Firebase 登录以获取该用户的真实数据:
Future googleSignIn(BuildContext context,
[String? email, facebookCredential]) async {
try {
GoogleSignInAccount googleUser;
dynamic popup = await _googleSignIn.signIn();
// cancelled login
if (popup == null) {
return null;
}
googleUser = popup;
GoogleSignInAuthentication googleAuth = await googleUser.authentication;
final AuthCredential credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
await _firebaseCredential(context, credential);
} catch (error) {
return null;
}
}
_firebaseCredential(BuildContext context, credential) async {
User user = …Run Code Online (Sandbox Code Playgroud) firebase firebase-authentication google-signin flutter flutter-dependencies
Firebase Auth 定价为海外用户每次验证 0.06 美元。什么是验证?
这只是验证一次他们的电子邮件地址,还是验证他们是否针对从应用程序发出的每个 API 请求而登录?