使用 Firebase.com 身份验证而不强制用户创建帐户
Use Firebase.com authenication without forcing the user to create an account
我正在开发一个小应用程序以允许用户存储待办事项。我正在使用 Firebase 作为我的后端。
对于第一次迭代,我不希望用户必须注册,但仍然只能看到它自己的数据。我的第一个想法是使用匿名身份验证,存储 UID 并在每次应用程序启动时重用它。这是不可能的,因为会话会在某个时候超时,并且用户下次会获得一个新的 UID。
我当然想确保用户只能使用 Firebase 安全和规则查看自己的项目。
我的想法是像这样保存项目:app.firebase。com/user/123456/todo-item
123456 bee是用户的唯一ID。
我可以自己创建一个唯一标识符并仍然使用 Firebase 安全和规则吗?
You would have to run your own custom authentication solution.
当 Activity 加载时,您必须向您的服务器发出请求。然后在服务器上,您可以在用户加载页面时为用户创建令牌:
// These payload properties are accessible
// by Security Rules which is awesome
Map<String, Object> payload = new HashMap<String, Object>();
payload.put("uid", "uniqueId1");
payload.put("some", "arbitrary");
payload.put("data", "here");
TokenGenerator tokenGenerator = new TokenGenerator("<YOUR_FIREBASE_SECRET>");
String token = tokenGenerator.createToken(payload);
包不只 Java,所以请阅读文档。
然后当您将令牌返回给用户时,您需要将令牌存储在本地。
存储令牌后,您可以检索它并进行身份验证。
Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/");
ref.authWithCustomToken(AUTH_TOKEN, new Firebase.AuthResultHandler() {
@Override
public void onAuthenticationError(FirebaseError error) {
System.err.println("Login Failed! " + error.getMessage());
}
@Override
public void onAuthenticated(AuthData authData) {
// authenticated
}
});
您可能对必须 运行 服务器并不感到兴奋,但请看一下将 Google AppEngine 与 Firebase JVM 客户端一起使用。很简单,帮你维护服务器。
我正在开发一个小应用程序以允许用户存储待办事项。我正在使用 Firebase 作为我的后端。 对于第一次迭代,我不希望用户必须注册,但仍然只能看到它自己的数据。我的第一个想法是使用匿名身份验证,存储 UID 并在每次应用程序启动时重用它。这是不可能的,因为会话会在某个时候超时,并且用户下次会获得一个新的 UID。 我当然想确保用户只能使用 Firebase 安全和规则查看自己的项目。
我的想法是像这样保存项目:app.firebase。com/user/123456/todo-item
123456 bee是用户的唯一ID。 我可以自己创建一个唯一标识符并仍然使用 Firebase 安全和规则吗?
You would have to run your own custom authentication solution.
当 Activity 加载时,您必须向您的服务器发出请求。然后在服务器上,您可以在用户加载页面时为用户创建令牌:
// These payload properties are accessible
// by Security Rules which is awesome
Map<String, Object> payload = new HashMap<String, Object>();
payload.put("uid", "uniqueId1");
payload.put("some", "arbitrary");
payload.put("data", "here");
TokenGenerator tokenGenerator = new TokenGenerator("<YOUR_FIREBASE_SECRET>");
String token = tokenGenerator.createToken(payload);
包不只 Java,所以请阅读文档。
然后当您将令牌返回给用户时,您需要将令牌存储在本地。
存储令牌后,您可以检索它并进行身份验证。
Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/");
ref.authWithCustomToken(AUTH_TOKEN, new Firebase.AuthResultHandler() {
@Override
public void onAuthenticationError(FirebaseError error) {
System.err.println("Login Failed! " + error.getMessage());
}
@Override
public void onAuthenticated(AuthData authData) {
// authenticated
}
});
您可能对必须 运行 服务器并不感到兴奋,但请看一下将 Google AppEngine 与 Firebase JVM 客户端一起使用。很简单,帮你维护服务器。