极光手机号码一键登录(web端全流程代码)
html部分
<a href="javascript:void (0)" onclick="oneBtnLogin()" class="one-fast-login" style="font-weight: 700;display: none">手机号码一键登录</a>
引入js
<script type="text/javascript" src="https://jverification.jiguang.cn/scripts/jverification-web.4.0.0.min.js"></script> <!--<script type="text/javascript" src="https://jverification.jiguang.cn/scripts/jverification-web.min.js"></script>--> <!-- 如需支持联通一键登录,请单独引入 h5auth1.min.js--> <script type="text/javascript" src="https://opencloud.wostore.cn/h5netauth/h5login/singleton/h5auth1.min.js"></script> <!-- 移动一键登录必须接入 crypto-js--> <script type="text/javascript" src="https://jverification.jiguang.cn/scripts/util/crypto-js.js"></script>
js部分
var isVerifyNow = false; var isVerifySuccess = false; var verifyEnable = false; var operaterVerify = ''; window.JVerificationInterface.init({ appkey: "5f9540f***********e", // 极光官网中创建应用后分配的 appkey,必填 debugMode: true, // 设置是否开启 debug 模式。true 则会打印更多的日志信息。设置 false 则只会输出 w、e 级别的日志。 success: function (data) { //TODO 初始化成功回调 console.log(data) // $('#msg').html(JSON.stringify(data)) isVerifySuccess = window.JVerificationInterface.isInitSuccess(); console.log('isVerifySuccess:' + isVerifySuccess) verifyEnable = window.JVerificationInterface.checkVerifyEnable(); console.log("verifyEnable:" + verifyEnable); if (!verifyEnable) { console.log("当前网络环境不支持认证"); return false; } //设置登录UI界面 window.JVerificationInterface.setCustomUIWithConfig({ logo: "http://www.*****w.com/img/logo96.png", appName: "应用名称" }) getverifytoken() }, fail: function (err) { //TODO 初始化失败回调 console.log(err) } }); function showBtnLogin() { $('.one-fast-login').show(); } function oneBtnLogin() { if(isVerifyNow){ console.log("正在获取..."); return false; } if (!isVerifySuccess) { console.log("正在初始化,稍后再试..."); popToast('正在初始化,稍后再试...') return false; } if (!verifyEnable) { console.log("当前网络环境不支持认证,请开启数据网络+关闭WIFI"); popToast('请开启数据网络') return false; } if(operaterVerify==''){ // console.log("当前网络环境不支持认证,请开启数据网络+关闭WIFI"); popToast('稍后再试') return false; } popToast('正在获取本机号码...',60) isVerifyNow=true; window.JVerificationInterface.loginAuth({ operater: operaterVerify, type: "full",//dialog success: function (data) { //TODO 一键登录获取 token 成功回调 isVerifyNow=false; if(data.code==0){ popToast('正在解析本机号码...',10); operaterVerify = data.operater; var tokenLogin = data.content;
tokenToGetMobile(tokenLogin,operaterVerify) }else{ popToast(data.message); } }, fail: function (data) { //TODO 一键登录获取 token 失败回调 isVerifyNow=false; var emsg=data.content var emsgstr=emsg[operaterVerify]; var emsgarr=emsgstr.split('|') popToast(data.code+':'+emsgarr[1]) } }) } //请求后台解析获取手机号 function tokenToGetMobile(token,exid) { var anlysurl='http://www.*******w.com/api.php?a=getMobileNum'; $.post(anlysurl,{loginToken:token,exid:exid,mod:'h5'}, function(data,status){ if(status=='success'){ if(data.code==200){ var anyphone=data.data.mobile; var anytoken=data.data.token; popToast('正在登陆...',12) tokenMobileToLogin(anyphone,anytoken,exid) }else{ popToast(data.data) } }else{ console.log('请求解析服务器失败') popToast('请求解析服务器失败') } } ); } //手机号验证登陆 function tokenMobileToLogin(phone,token,exid) { var loginsurl='http://www.******w.com/register.php?action=fastlogin'; $.post(loginsurl, { token:token, exid:exid, mobile:phone }, function(data,status){ if(status=='success'){ if(data.code==200){ popToast('登陆成功') succJumpForward() }else{ popToast(data.data) } }else{ console.log('请求登录失败') popToast('请求登录服务器失败') } } ); } //一键登陆不需调用此方法 function getverifytoken() { if (!isVerifySuccess) { console.log("正在初始化,稍后再试..."); return false; } if (!verifyEnable) { console.log("当前网络环境不支持认证,请开启数据网络+关闭WIFI"); return false; } window.JVerificationInterface.getToken({ fail: function(data) { // $('#limss').html(JSON.stringify(data)) console.error("JVerificationInterface getToken fail:"+JSON.stringify(data)) }, success: function(data) { // $('#limss').html(JSON.stringify(data)) operaterVerify = data.operater; showBtnLogin(); // var token = data.content; console.log("JVerificationInterface getToken success:"+token) } }) /*window.JVerificationInterface.getToken({ operater: operaterVerify, success: function (data) { //TODO 获取token成功回调 $('#limss').html(JSON.stringify(data)) operaterVerify = data.operater; var token = data.content; console.log(operater, token); }, fail: function (data) { //TODO 获取token失败回调 $('#limss').html(JSON.stringify(data)) console.log('gettoken fail', data) } })*/ }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了