用户注册与登录功能的实现

参考文档:https://firebase.google.com/docs/auth/android/password-auth

集成firebase中的用户管理功能

在上一篇文章中,集成的AdMob SDK与Firebase版本不同,所以导致了在调用firebase api时编译出错,需要手动将版本号调整(这里用的是10.2.1)
在项目上右键,点击”Open Module Settings-Ads”,取消勾选
然后打开app级的build.gradle,加入

compile 'com.google.firebase:firebase-auth:10.2.1'
compile 'com.google.android.gms:play-services-ads:10.2.1'

这里写图片描述

然后点击右上角的“Sync now”,等待完成

编写UI

涉及这个功能的是三个Activity
LoginActivity 用户登录
RegActivity 用户注册
UserCenterActivity 用户中心

首先是布局文件

拖放控件,重新修改ID,文本
再在string.xml中加入相应的资源
效果如图
这里写图片描述
注册界面只需复制粘贴,然后用Ctrl+F,将login替换为reg
最后在按钮控件上添加onClick响应函数

接着新建三个继承自Activity的java类,添加成员变量,并写入相应的初始化代码

    private EditText et_email,et_password;
    private FirebaseAuth mAuth;
    ...
    private void init(){
        et_email= (EditText) findViewById(R.id.login_et_email);
        et_password= (EditText) findViewById(R.id.login_et_password);
        mAuth = FirebaseAuth.getInstance();
    }

再实现onClic响应函数

    public void login(View v){
        ...
    }
    public void reg(View v){
        ...
    }

布局也就完成了

接着开始写实现代码

由于对话框会被多次调用,所以这里定义了一个UIUtils类

package com.greenapp.note.utils;

import android.app.AlertDialog;
import android.content.Context;
import android.widget.Toast;

import com.greenapp.note.R;

/**
 * Created by Administrator on 2017/7/31 0031.
 */

public class UIUtils {

    public static AlertDialog createDialog(String title, String message, Context context){
        AlertDialog.Builder builder=new AlertDialog.Builder(context);
        builder.setTitle(title);
        builder.setMessage(message);
        AlertDialog dlg = builder.create();
        dlg.show();
        return dlg;
    }

    public static AlertDialog createDialog(String message, Context context){
        return createDialog(context.getString(R.string.wait),message,context);
    }

    public static void makeToast(String text,Context context){
        Toast.makeText(context,text,Toast.LENGTH_SHORT);
    }

}

在按钮的相应函数中调用mAuth的createUserWithEmailAndPassword函数,并添加事件完成的监听器

final AlertDialog dlg= UIUtils.createDialog(getString(R.string.wait),getString(R.string.reg_handling),this);
        mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if(dlg!=null){
                    dlg.dismiss();
                }
                if(task.isSuccessful()){
                    Toast.makeText(RegActivity.this,getString(R.string.reg_succeed),Toast.LENGTH_SHORT).show();
                    startActivity(new Intent(RegActivity.this,UserCenterActivity.class));
                    RegActivity.this.finish();
                }else{
                        Toast.makeText(RegActivity.this,getString(R.string.reg_failed),Toast.LENGTH_SHORT).show();
                }
            }
        });

登录那部分也就依葫芦画瓢了,调用signInWithEmailAndPassword就OK了

最后在UserCenterActivity中添加显示登录用户的email退出功能

public void logout(View v){
        final AlertDialog dlg=UIUtils.createDialog(getString(R.string.center_logout_handling),UserCenterActivity.this);
        mAuth.addAuthStateListener(new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                if(firebaseAuth.getCurrentUser()==null){
                    dlg.dismiss();
                    Toast.makeText(UserCenterActivity.this,getString(R.string.logout_succeed),Toast.LENGTH_SHORT).show();
                    UserCenterActivity.this.finish();
                    mAuth.removeAuthStateListener(this);
                }
            }
        });
        mAuth.signOut();
    }

最后运行测试

这里写图片描述
这里写图片描述
这里写图片描述
在Firebase Console中也可以看见刚才注册的用户
这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值