微信小程序----用户拒绝授权,重新调起授权
wx.getUserInfo({
withCredentials: true,
success: function (res) {
var nickName = res.userInfo.nickName;
var avatarUrl = res.userInfo.avatarUrl;
var gender = res.userInfo.gender;
wx.login({
success: function (res) {
if (res.code) {
var rsaData = _this.rsaData({ code: res.code, wx_appid: _this.globalData.appId, nickName: nickName, gender: gender, avatarUrl: avatarUrl })
wx.request({
url: _this.globalData.domain + "Index/login",
data: {
encrypt_data: rsaData
},
method: "POST",
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: function (res) {
const user_id = res.data.data.user_id;
var openid = res.data.data.openid;
wx.setStorage({
key: 'user_id',
data: user_id,
})
wx.setStorage({
key: 'openid',
data: openid,
})
// 获取会员信息
var rsaData = _this.rsaData({ user_id: user_id })
wx.request({
url: _this.globalData.domain + "user/get_user",
data: {
encrypt_data: rsaData,
token: wx.getStorageSync('token')
},
header: {
'content-type': 'application/x-www-form-urlencoded'
},
method: "POST",
success: function (res) {
},
})
},
})
}
}
})
},
fail: function (res) {
var that = this;
wx.openSetting({
success(res) {
if (!res.authSetting['scope.userInfo'] || !res.authSetting["scope.userLocation"]) {
wx.authorize({
scope: 'scope.userInfo',
success(res) {
// 失败之后再次登入
wx.getUserInfo({
withCredentials: true,
success: function (res) {
var nickName = res.userInfo.nickName;
var avatarUrl = res.userInfo.avatarUrl;
var gender = res.userInfo.gender;
wx.login({
success: function (res) {
if (res.code) {
var rsaData = _this.rsaData({ code: res.code, wx_appid: _this.globalData.appId, nickName: nickName, gender: gender, avatarUrl: avatarUrl })
wx.request({
url: _this.globalData.domain + "Index/login",
data: {
encrypt_data: rsaData
},
method: "POST",
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: function (res) {
const user_id = res.data.data.user_id;
var openid = res.data.data.openid;
wx.setStorage({
key: 'user_id',
data: user_id,
})
wx.setStorage({
key: 'openid',
data: openid,
})
// 获取会员信息
var rsaData = _this.rsaData({ user_id: user_id })
wx.request({
url: _this.globalData.domain + "user/get_user",
data: {
encrypt_data: rsaData,
token: wx.getStorageSync('token')
},
header: {
'content-type': 'application/x-www-form-urlencoded'
},
method: "POST",
success: function (res) {
},
})
},
})
}
}
})
},
})
// 失败之后再次登入
}, fail: (res) => {
/*
* 点击取消之后再次获取user_id 和openid
*/
wx.showModal({
title: '警告',
content: '您点击了拒绝授权,将无法正常使用******的功能体验,请10分钟后再次点击授权,或者删除小程序重新进入',
success: function (res) {
if (res.cancel) {
wx.openSetting({
success: (res) => {
// 失败之后再次登入
wx.getUserInfo({
withCredentials: true,
success: function (res) {
var nickName = res.userInfo.nickName;
var avatarUrl = res.userInfo.avatarUrl;
var gender = res.userInfo.gender;
wx.login({
success: function (res) {
if (res.code) {
var rsaData = _this.rsaData({ code: res.code, wx_appid: _this.globalData.appId, nickName: nickName, gender: gender, avatarUrl: avatarUrl })
wx.request({
url: _this.globalData.domain + "Index/login",
data: {
encrypt_data: rsaData
},
method: "POST",
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: function (res) {
const user_id = res.data.data.user_id;
var openid = res.data.data.openid;
wx.setStorage({
key: 'user_id',
data: user_id,
})
wx.setStorage({
key: 'openid',
data: openid,
})
// 获取会员信息
var rsaData = _this.rsaData({ user_id: user_id })
wx.request({
url: _this.globalData.domain + "user/get_user",
data: {
encrypt_data: rsaData,
token: wx.getStorageSync('token')
},
header: {
'content-type': 'application/x-www-form-urlencoded'
},
method: "POST",
success: function (res) {
},
})
},
})
}
}
})
},
})
// 失败之后再次登入
}
})
}
},
})
}
})
}
}
})
}
})
方法可能有点繁琐,有不足的地方还请多指教
微信小程序----用户拒绝授权,重新调起授权的更多相关文章
- 微信小程序-用户拒绝授权使用 wx.openSetting({}) 重新调起授权用户信息
场景模拟:用户进入微信小程序-程序调出授权 选择拒绝之后,需要用到用户授权才能正常使用的页面,就无法正常使用了. 解决方法:在用户选择拒绝之后,弹窗提示用户 拒绝授权之后无法使用,让用户重新授权(微信 ...
- 微信小程序-获取当前城市位置及再次授权地理位置
微信小程序-获取当前城市位置 1. 获取当前地理位置,可通过wx.getLocation接口,返回经纬度.速度等信息; 注意---它的默认工作机制: 首次进入页面,调用该api,返回用户授权结果,并保 ...
- 微信小程序用户数据解密
概述 通过微信web开发者工具创建登录,获取用户信息,发送至后台,进行用户数据解密 详细 代码下载:http://www.demodashi.com/demo/10705.html 一.准备工作 1. ...
- 微信小程序用户信息解密失败导致的内存泄漏问题。
微信小程序获取用户解密的Session_key 然后对 encryptedData进行解密 偶尔报错 时间长了之后会报内存溢出: java.lang.OutOfMemoryError: GC over ...
- 关于微信小程序在ios中无法调起摄像头问题
这几天关于微信小程序开发关于wx.chooseVideo组件问题,因为自己一直是安卓手机上测试,可以调取摄像头,但是应用在ios上无法打开摄像头,困扰了好多天,经过反复查看官方文档,今天总算修复了这个 ...
- 微信小程序 用户登录 服务器端(TP5.1)实现
先来看官方提供的流程图: 客户端: 小程序客户端通过 wx.login() 获取登录code , 然后将code当做参数传递到服务器. getToken(){ var that = this; wx. ...
- 微信小程序没有返回按钮怎么办?微信小程序左上角返回按钮怎么调出来?
如果你发现自己的小程序页面没有返回按钮,请检查是不是用的wx.redirectTo(OBJECT)进行的跳转,如果是那就把它改成wx.navigateTo(OBJECT)就可以了. wx.naviga ...
- 微信小程序 --- 用户登录
整体逻辑:点击用户中心,如果如果整个页面没有
- 微信小程序~用户转发 onShareAppMessage
只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮,在用户点击转发按钮的时候会调用,此事件需要return一个Object,包含title和path两个字段,用于自定义转发内容 代码使用onSh ...
随机推荐
- dataguard日志自动删除
dataguard日志自动删除 1.判断日志是否已经应用到今天.2.删除3天前的日志.3.主机.备机分别配置 ----check_del_arch.sh#!/bin/shORACLE_HOME=/ho ...
- 网络-04-端口号-linux端口详解大全--TCP注册端口号大全
# John Murphy <john.m.murphy&mci.com>afs3-fileserver 7000/tcp file server itselfafs3-files ...
- FineReport中日期时间函数使用总结
说明:凡函数中以日期作为参数因子的,其中日期的形式都必须是yy/mm/dd.而且必须用英文环境下双引号(" ")引用. DATE DATE(year,month,day):返回一个 ...
- JAVA函数的重载和重写
一.什么是重载(overlording) 在JAVA中,可以在同一个类中存在多个函数,函数名称相同但参数列表不同.这就是函数的重载(overlording).这是类的多太性表现之一. 二.重载的作用: ...
- ASP.NET CORE做的网站运行在docker实践
用VS2017 建立了 DotNet Core 2.2 的网站后,如何转移到 Docker 下运行? 下面分两种方式来实践: 1.直接手动命今行,将本机目录映射进Docker,运行网站.2.制作 Im ...
- [dart学习]第二篇:dart变量介绍 (一)
前言 本文的所有内容均是官方文档的简单翻译和理解,需要查看原文,请登录 https://www.dartlang.org/guides/language/language-tour 阅读, 让我们 ...
- GoldenGate HANDLECOLLISIONS参数使用说明
HANDLECOLLISIONS在官方文档上的说明: 使用HANDLECOLLISIONS和NOHANDLECOLLISIONS参数来控制在目标上应用SQL时,Replicat是否尝试解决重复记录和缺 ...
- mysql时间相加函数DATE_ADD()
mysql中的DATE_ADD()函数 1.定义:函数向日期添加指定的时间间隔. 2.语法:DATE_ADD(date,INTERVAL expr type) date 参数是合法的日期表达式.exp ...
- Java8将List转为Map
1.实体 public class Hosting { private int id; private String name; private long websites; public Hosti ...
- delphi 利用 InterlockedCompareExchange 实现主线程维一锁等待
在进行资源锁定时,一般是线程之间进行交互,很少需要在主线程也对资源进行锁定. 不过在一些复杂的业务中,存在子线程与主线程的交互,且一些资源也同步在主线程中使用时,主线程资源锁,就有存在的必要. 假定有 ...