共计 3224 个字符,预计需要花费 9 分钟才能阅读完成。
Android 手机登录和第三方登录
一:Android 登录
Android 利用支流登录流程比照
登录形式 | 登录步骤 | 耗时 |
---|---|---|
账号 + 明码 | 注册和登录拆散,登录时需输出账号和规定不尽相同的明码,十分繁琐 | 24s 以上 |
手机号码 + 短验 | 输出手机号码—期待上行短验—切换到短信利用界面记忆验证码—切回利用界面输出短信验证码—点击登录 | 16s 以上 |
一键登录 | 用户一键受权后,调用运营商网关进行号码认证和登录 | 1.5s |
1. 账号,明码登录这种越来越少了
2. 短信验证码登录,当初支流的短信服务,有阿里云短信服务,MobTech(袤博) 等平台
https://www.mob.com/
3. 一键登录,成为支流的趋势
即通过挪动认证的网络认证能力,实现 APP 用户无需输出帐号密码,即可应用本机手机号码主动登录的能力。利用应用层无奈截取的网络层号码认证能力验证号码的真实性,本机号码主动校验是现有短信验证形式的优化,能打消现有短信验证模式等待时间长、操作繁琐和容易泄露的痛点。
一键登录的能力劣势
● 升高利用注册 / 登录门槛,加重用户记忆负担,进步用户体验;
● 升高对用户身份、通信行为等属性验证的繁琐步骤,助力企业欠缺危险管控零碎
● 取号成功率高达 99.9%。
● 两步实现注册登录,耗时仅需 1.5 秒。
● 节俭企业短验老本
二:第三方登录
微信登录
https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.html
筹备:
挪动利用微信登录是基于 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*******";
}
https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Launching_a_Mini_Program/iOS_Development_example.html