mui APP 微信登录授权
一、在微信平台上申请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 微信登录授权的更多相关文章
- 混合应用 微信登录授权 微信登录认证失败 ios PGWXAPI错误-1 code:-100 / 安卓 message:invalid appsecret innerCode:40125
最近项目需要做微信登录,于是利用HTML5+ API Reference的OAuth模块管理客户端的用户登录授权验证功能,允许应用访问第三方平台的资源.(链接:https://www.dcloud.i ...
- 网站微信登录授权 ASP.NET
最新做一些项目都有微信登录注册什么的,今天就把自己整理的demo提供给大家 微信认证流程(我自己简称三次握手): 1.用户同意授权,获取code 2.通过code换取网页授权access_token, ...
- 关于微信登录授权获取unionid的方法
前言:微信登录授权是目前普遍存在于小程序的,还有一种静默授权方式是微信提供的但是不推荐使用,由于不同设备登录openid是不同的那么我们应该怎样拿到一个唯一的ID呢,下面做分享 wxml代码 < ...
- APP微信登录---第三方登录
(一)引入maven配置 <dependency> <groupId>com.github.liyiorg</groupId> <artifactId> ...
- APP微信登录 服务器处理代码
采用框架THINKPHP5 需要客户端传的参数有 udid openid nickname avatar_path /* * @param 第三方微信登录 * @param openid udid ...
- App支付宝登录授权
一.在支付宝开放平台申请App应用,并且配置后台信息 https://openhome.alipay.com/platform/appManage.htm#/apps 填写自己的申请信息 添加应用功能 ...
- Vue-router hash模式微信登录授权验证,#号处理
微信授权登录验证会把网址中的#号去掉,这样在跳转的时候Vue拿不到Code.所以做了以下处理 let href = window.location.href; if (href.includes(&q ...
- Java 微信登录授权后获取微信用户信息昵称乱码问题解决
String getUserInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token="+access_toke ...
- apicloud 第三方登录授权、微信、扣扣、微博登录授权
授权登录.接入第三方的配置 例如:微信的登录授权. 首先在模块里面添加 wx 这个模块,然后在项目的配置文件里面进行配置. 配置的时候要现在微信开放平台 https://open.weixin.qq. ...
随机推荐
- 图解Python 【第三篇】:Python-函数
本节内容一览图 一.函数介绍 1.什么是函数 2.定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 (). 任何传入参 ...
- shell 脚本基础与条件判断
#!shell脚本格式决定专业性 #!/bin/bash #filename:脚本名 #author:作者 #date:时间 #脚本作用 脚本的执行方式 #脚本名为wk.sh 绝对路径 /root/ ...
- error: atomic: 没有那个文件或目录
Linux下编译的时候遇到一个问题,就是提示 error: atomic: 没有那个文件或目录 执行的命令是gcc -o myCXXLog myCXXLog.c 经过网上搜索,解决方法有二 (1 ...
- SOA相关资料
http://www.cnblogs.com/mushroom/p/4369032.html
- Qt编写数据可视化大屏界面电子看板1-布局方案
一.前言 布局方案在整个数据可视化大屏界面电子看板系统中,是除了基础功能以外的核心功能之一,只有具备了布局方案这个功能,才能让用户随意调整自己想要的布局,保存成自定义名称的布局配置文件,这样就大大增加 ...
- DEVOPS ROADMAP
- Int8,Int16,Int32,Int64 有啥不同呢?看了立马就懂!
大家有没有写了很久代码,还不知道这个Int8,Int16, Int32, Int64有什么区别呢?或者是为什么后面的数字不一样呢? 初步了解了一下,才清楚这个东西. 先来扫盲一下计算机存储单元, 在计 ...
- 用myeclipse连接MySQL8.0时没有配置jar包
先上测试代码 package testJdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql. ...
- 【VS开发】【C/C++开发】printf缓冲区刷新
printf之缓冲区小结: 今天调试程序,发现了一个有趣的现象,printf函数没有按照预期的结果输出重复的字符串,单步调试显示代码的确走到了打印屏幕的分支,没有显示不由得想到了是不是缓冲区去刷新的问 ...
- Linux用户管理重要初始化目录skel案例讲解
1. /etc/skel 目录 /etc/skel 的场景作用