用户是否只能通过设备创建帐户?如果他尝试从设备创建2个帐户,将显示警告对话框?
我想通过获取设备ID来使用数据库。但任何人都可以详细告诉我吗?
答案 0 :(得分:0)
您必须选择A& A提供商(身份验证和授权)。 当然,如果你选择的话,你可以自己管理它。
Firebase是一个很好的免费选项。 只需编写屏幕即可收集用户信息并提供登录屏幕。然后使用firebase API注册用户并登录。
另一个不错的选择是AWS上的Cognito,但需要更多地了解AWS然后Firebase,所以我想说对于A& A流程较新的人来说,firebase更容易。
如果您不想管理登录,您可以获取设备广告商ID并将其存储为userId,以便它只注册设备一次,但是如果用户确实想跳过所有设备,则会收到警告箍,他们可以从他们的谷歌设置重置它,但是,任何人都不太可能甚至不知道它是怎么回事。 Android唯一ID不再可以使用设备ID或电话ID。
因此,为了确保他们无法使用相同的电子邮件登录新设备,只需使用用户名或电子邮件存储设备的广告商ID即可。
然后确保在后续登录时始终确认advertiserID以及用户名/密码,然后再继续操作。您可以先验证用户/通行证,然后再继续验证用户/广告客户ID或其他订单。无论你喜欢什么。
AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext()).getId();
好的,所以你的LoginScreen有一个登录按钮
btnLogin_onClick(){
validateSingleAccountForDevice(false);
}
btnCreateAccount_onClick(){
validateSingleAccountForDevice(true);
}
validateSingleAccountForDevice(final boolean isCreatingAccount){
String id = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext()).getId();
String username = txtEmail.getText.toString();
new ValidateSingleDeviceForEmailAsyncTask(){
protected void onPostExecute(successModel model){
if(model.isSuccess){
if(isCreatingAccount){
attemptCreateAccount();
}else{
attemptLogin();
}
}else{
showAlertDialogOfAccountAlreadyUsedOnAnotherDevice();
}
}
};
}
private void attemptLogin(){
String username = txtEmail.getText.toString();
String password = txtPassword.getText.toString();
new LoginWithUserPass(username, password){
protected void onPostExecute(successModel model){
if(model.isSuccess){
moveToLandingPage();
}else{
showAlertOfFailedLogin();
}
}
};
}
private void createAccount(){
String username = txtEmail.getText.toString();
String password = txtPassword.getText.toString();
new CreateAccountForUser(username, password){
protected void onPostExecute(successModel model){
if(model.isSuccess){
moveToLandingPage(); //or MFA if using
}else{
showAlertOfFailedCreate();
}
}
};
}
这一切都有意义吗?
这些asyncTask是“makeup”让你自己做一个Async调用一个restful API来验证电子邮件与设备和你自己的登录。你的问题不是“我如何编写AsyncTask或如何记录用户,所以我没有提供asyncTasks到那些东西,因为你没有提供足够的信息让我甚至做到这一点,加上这不是目标我的回答。
我只是给出了一个例子,说明如果你编写代码来命中API并返回Asynctask内部会是什么样子。如果您不熟悉异步任务,请做一些研究,这不是您的全功能软件解决方案。