一、在微信平台上申请appid、appsecret。

二、app --》 manifest.json--》SDK配置(填写申请好的appid和appsecret)

三、在登录页,点击微信登录按钮,若绑定微信,则免账号密码登录直接跳转到首页;若未绑定,则弹出未绑定微信。

// 微信授权登录对象
var aweixin=null; // 调用plus.oauth.getServices获取保存
// 当前环境支持的所有授权登录对象
var auths = {}; mui.plusReady(function() {
// 获取鉴权服务
getService();
}) // 获取登录授权认证服务列表,单独保存微信登录授权对象
// 5+APP在plusready事件中调用,uni-app在vue页面的onLoad中调用
function getService(){
plus.oauth.getServices(function(services){
for(var i=0;i<services.length;i++){
auths[services[i].id] = services[i];
}
aweixin = auths['weixin'];
}, function(e){
plus.nativeUI.alert("获取登录授权服务列表失败:"+JSON.stringify(e));
} );
} //wx登录
document.getElementById('wxdenglu').addEventListener('tap',function(){
plus.nativeUI.showWaiting("正在登录中...",{padlock: true});
if(!aweixin.authResult){
authLogin().then(res=>{
wxLogin()//调用自定义的登录接口
}).catch(res=>{
plus.nativeUI.closeWaiting();
})
}else{
wxLogin()//调用自定义的登录接口
}
});

四、用账号密码登进首页时,判断是否绑定微信,若为绑定微信,则提示让其绑定微信。

五、微信绑定和解绑。

// 微信授权登录对象
// 调用plus.oauth.getServices获取保存
var aweixin=null;
// 当前环境支持的所有授权登录对象
var auths = {}; mui.plusReady(function(){
// 获取鉴权服务
getService()
}); //wx绑定
function weixinBind(){
plus.nativeUI.showWaiting("正在绑定中...",{padlock: true});
if(!aweixin.authResult){
authorize().then(res=>{
wxBind(1,aweixin.authResult.openid)
}).catch(res=>{
plus.nativeUI.closeWaiting();
})
}else{
wxBind(1,aweixin.authResult.openid)
}
}; //wx解绑
function weixinUnBind(){
plus.nativeUI.showWaiting("正在解绑中...",{padlock: true});
wxBind(2,"")
} // 获取登录授权认证服务列表,单独保存微信登录授权对象
// 5+APP在plusready事件中调用,uni-app在vue页面的onLoad中调用
function getService(){
plus.oauth.getServices(function(services){
for(var i=0;i<services.length;i++){
auths[services[i].id] = services[i];
}
aweixin = auths['weixin'];
}, function(e){
plus.nativeUI.alert("获取登录授权服务列表失败:"+JSON.stringify(e));
} );
} // 获取微信登录授权对象后可进行授权操作
function authorize(){
return new Promise(function (resolve, reject) {
if(!aweixin){
plus.nativeUI.alert("当前环境不支持微信登录");
return;
}
aweixin.authorize(function(e){
// plus.nativeUI.alert("授权成功:"+JSON.stringify(e));
authLogin().then(res=>{
resolve(res);
});
}, function(e){
// plus.nativeUI.alert("授权失败:"+JSON.stringify(e));
plus.nativeUI.closeWaiting();
reject(e);
}, {scope:'snsapi_userinfo',state:'authorize test'});
})
} // 获取微信登录授权对象后可进行登录认证操作
function authLogin(){
return new Promise(function (resolve, reject) {
if(!aweixin){
plus.nativeUI.alert("当前环境不支持微信登录");
return;
}
if(!aweixin.authResult){
aweixin.login(function(e){
// plus.nativeUI.alert("登录认证成功!"+JSON.stringify(e));
resolve(e);
}, function(e){
reject(e);
} );
}else{
// plus.nativeUI.alert("已经登录认证!");
}
})
}

mui APP 微信登录授权的更多相关文章

  1. 混合应用 微信登录授权 微信登录认证失败 ios PGWXAPI错误-1 code:-100 / 安卓 message:invalid appsecret innerCode:40125

    最近项目需要做微信登录,于是利用HTML5+ API Reference的OAuth模块管理客户端的用户登录授权验证功能,允许应用访问第三方平台的资源.(链接:https://www.dcloud.i ...

  2. 网站微信登录授权 ASP.NET

    最新做一些项目都有微信登录注册什么的,今天就把自己整理的demo提供给大家 微信认证流程(我自己简称三次握手): 1.用户同意授权,获取code 2.通过code换取网页授权access_token, ...

  3. 关于微信登录授权获取unionid的方法

    前言:微信登录授权是目前普遍存在于小程序的,还有一种静默授权方式是微信提供的但是不推荐使用,由于不同设备登录openid是不同的那么我们应该怎样拿到一个唯一的ID呢,下面做分享 wxml代码 < ...

  4. APP微信登录---第三方登录

    (一)引入maven配置 <dependency> <groupId>com.github.liyiorg</groupId> <artifactId> ...

  5. APP微信登录 服务器处理代码

    采用框架THINKPHP5 需要客户端传的参数有  udid openid nickname avatar_path /* * @param 第三方微信登录 * @param openid udid ...

  6. App支付宝登录授权

    一.在支付宝开放平台申请App应用,并且配置后台信息 https://openhome.alipay.com/platform/appManage.htm#/apps 填写自己的申请信息 添加应用功能 ...

  7. Vue-router hash模式微信登录授权验证,#号处理

    微信授权登录验证会把网址中的#号去掉,这样在跳转的时候Vue拿不到Code.所以做了以下处理 let href = window.location.href; if (href.includes(&q ...

  8. Java 微信登录授权后获取微信用户信息昵称乱码问题解决

    String getUserInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token="+access_toke ...

  9. apicloud 第三方登录授权、微信、扣扣、微博登录授权

    授权登录.接入第三方的配置 例如:微信的登录授权. 首先在模块里面添加 wx 这个模块,然后在项目的配置文件里面进行配置. 配置的时候要现在微信开放平台 https://open.weixin.qq. ...

随机推荐

  1. 快速解决设置Android 23.0以上版本对SD卡的读写权限无效的问题

    快速解决设置Android 23.0以上版本对SD卡的读写权限无效的问题 转 https://www.jb51.net/article/144939.htm 今天小编就为大家分享一篇快速解决设置And ...

  2. AES对称加密解密类

    import java.io.UnsupportedEncodingException; import javax.crypto.Cipher; import javax.crypto.spec.Se ...

  3. Redis高级特性及应用场景

    Redis高级特性及应用场景 redis中键的生存时间(expire) redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它. 过期时间可以设置为秒或者毫秒精度. ...

  4. 小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列(一)初体验

    课程github地址 https://github.com/mercyblitz/segmentfault-lessons 传统的web应用架构.微服务是一种架构.不限定什么语言 单体应用和微服务的对 ...

  5. vlc 详细使用方法:libvlc_media_add_option 函数中的参数设置

    vlc 详细使用方法:libvlc_media_add_option 函数中的参数设置 [转载自]tinyle的专栏 [原文链接地址]http://blog.csdn.net/myaccella/ar ...

  6. 包含min函数的栈、队列

    题目:定义栈的数据结构,请在该类型中实现一个能够得到栈/队列的最小元素的min函数.在该栈/队列中,调用min.入栈(入队列)及出栈(出队列)函数的时间复杂度都是O(1). 1. 包含min函数的栈 ...

  7. HBase管理与监控——内存调优

    HMaster 没有处理过重的负载,并且实际的数据服务不经过 HMaster,它的主要任务有2个:一.管理Hbase Table的 DDL操作, 二.region的分配工作,任务不是很艰巨. 但是如果 ...

  8. 【JVM学习笔记】系统类加载器

    可以通过“java.system.class.loader"属性指定系统类加载器 默认情况下,该属性值为空: public class Test { public static void m ...

  9. 在HbuilderX的Uni-app中引入crypto-js md5

    在 hbuilderX的菜单“视图”中选择“显示终端”,在终端中把当前目录定位到uni-app的根目录,这样才可以把crypto-js库安装在正确的位置,在终端中键入:npm install cryp ...

  10. 修改注册表打开PDF内嵌的zip等文件

    今天在打开一个 PDF 文件的时候,发现文件里面嵌入的 .zip 文件无法打开.当然 .png 之类的文件还是可以打开的.网上的各种“信任管理器”白名单方法都是无效的.后来查了官网说明,得知是因为这类 ...