一、在微信平台上申请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. 使用预设半透明鼠标Cursor

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  2. 在matlab中读取trc文件

    用matlab的load()函数 1.相对路径读法(将文件放入'MATLAB\bin'目录): a = load('aizhenjiang_g10.trc') 2.绝对路径读法(任何位置) a = f ...

  3. [spring mvc][转]<mvc:default-servlet-handler/>的作用

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

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

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

  5. Spring-Kafka —— 实现批量消费和手动提交offset

    spring-kafka的官方文档介绍,可以知道自1.1版本之后, @KafkaListener开始支持批量消费,只需要设置batchListener参数为true 把application.yml中 ...

  6. elk收集tomcat的日志

    logstash收集tomcat的日志 不要修改下tomcat中server.xml的日志格式,否则tomcat无法启动,试过多次,不行,就用自带的日志让logstash去收集 首先给tomcat日志 ...

  7. JavaScript控制输入框只能输入中文,英文和数字的组合,其他字符不能输入的校验

    if(!/^[A-Za-z0-9\u4e00-\u9fa5]+/.test(value)){ alert('不能输入非法字符') }

  8. SQL ----- JDBC 用ID查询某条记录

    package demo; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; ...

  9. JMeter-- ThreadGroup原理分析

    JMeterEngine会驱动JMeter ThreadGroup启动Test Threads 执行测试,其本身也是一个Runnable,这里把测试驱动(JUnit或者其他类似main之类的)看作主线 ...

  10. 数据结构之单链表(golang版)

    线性表之单链表 package main //线性表中的链式存储结构 //第一个节点为头节点,并不真实保存数据,头节点基本代表了整个链表 import ( "fmt" ) type ...