Android 手机登录和第三方登录
一:Android 登录
Android 应用主流登录流程对比
登录方式 | 登录步骤 | 耗时 |
---|---|---|
账号+密码 | 注册和登录分离,登录时需输入账号和规则不尽相同的密码,非常繁琐 | 24s以上 |
手机号码+短验 | 输入手机号码—等待下行短验—切换到短信应用界面记忆验证码—切回应用界面输入短信验证码—点击登录 | 16s以上 |
一键登录 | 用户一键授权后,调用运营商网关进行号码认证和登录 | 1.5s |
1.账号,密码登录这种越来越少了
2.短信验证码登录,现在主流的短信服务,有阿里云短信服务,MobTech(袤博)等平台
https://www.mob.com/
3.一键登录,成为主流的趋势
即通过移动认证的网络认证能力,实现APP用户无需输入帐号密码,即可使用本机手机号码自动登录的能力。利用应用层无法截取的网络层号码认证能力验证号码的真实性,本机号码自动校验是现有短信验证方式的优化,能消除现有短信验证模式等待时间长、操作繁琐和容易泄露的痛点。
一键登录的能力优势
● 降低应用注册/登录门槛,减轻用户记忆负担,提高用户体验;
● 降低对用户身份、通信行为等属性验证的繁琐步骤,助力企业完善风险管控系统
● 取号成功率高达99.9%。
● 两步完成注册登录,耗时仅需1.5秒。
● 节省企业短验成本
二:第三方登录
微信登录
https://developers.weixin.qq....
准备:
移动应用微信登录是基于OAuth2.0 协议标准构建的微信 OAuth2.0 授权登录系统。
在进行微信 OAuth2.0 授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的移动应用,并获得相应的 AppID 和 AppSecret,申请微信登录且通过审核后,可开始接入流程
微信登录Android实现
第一步:依赖和权限
dependencies {
compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:1.0.2'
}
//权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
第二步:接入配置
1.1AndroidManifest.xml添加一个微信Activity
<!-- 微信 -->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
注意:在应用包名+.wxapi下面放置WXEntryActivity.java。
public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
private IWXAPI api;
private String code;
private WXEntryActivity mContext;
private ProgressDialog mProgressDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
api = WXAPIFactory.createWXAPI(this, Constant.WX_APPID,true);
api.registerApp(Constant.WX_APPID);
api.handleIntent(getIntent(), this);
}
@Override
public void onReq(BaseReq baseReq) {
}
@Override
protected void onNewIntent(Intent intent){
super.onNewIntent(intent);
api.handleIntent(intent, this);
}
@Override
public void onResp(BaseResp baseResp) {
switch (baseResp.errCode) {
case BaseResp.ErrCode.ERR_OK:
Toast.makeText(this, "发送成功", Toast.LENGTH_SHORT).show();
code = ((SendAuth.Resp) baseResp).code;
//createProgressDialog();
MyApp.isWX = true;
MyApp.code = code;
finish();
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
Toast.makeText(this, "发送被拒绝", Toast.LENGTH_SHORT).show();
finish();
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
Toast.makeText(this, "发送取消", Toast.LENGTH_SHORT).show();
finish();
break;
case BaseResp.ErrCode.ERR_UNSUPPORT:
Toast.makeText(this, "不支持错误", Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(this, "发送返回", Toast.LENGTH_SHORT).show();
break;
}
}
private void createProgressDialog() {
mContext =this;
mProgressDialog =new ProgressDialog(mContext);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mProgressDialog.setCancelable(false);
mProgressDialog.setCanceledOnTouchOutside(false);
mProgressDialog.setTitle("");
mProgressDialog.setMessage("");
mProgressDialog.show();
}
}
AppID是什么
public class Constant {
//微信申请的AppID
public static String WX_APPID = "wx6e0a11*******";
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。