<button wx:if="{{canIUse}}"   open-type="getUserInfo"  bindgetuserinfo="bindGetUserInfo"    hidden="{{userinfo}}">授权登录</button>
data: {
userinfo:false,
}
onLoad:function(){
wx.getStorage({
key: 'userinfo',
success: function(res) {
that.setData({
userinfo:true
})
},
fail:function(){
that.setData({
userinfo: false
})
}
})
}
//方法
bindGetUserInfo: function(e) {
var that = this;
console.log(e);
console.log(e.detail.userInfo)
wx.login({
success: res => {
// ------ 获取凭证 ------
 
var code = res.code;
console.log(code);
if (code) {
// console.log('获取用户登录凭证:' + code);
// ------ 发送凭证 ------
app.util.request({
"url": "entry/wxapp/GetUid",
data: {
code: code
},
method: 'POST',
header: {
'content-type': 'application/json'
},
success: function(res) {
console.log(res);
if (res.statusCode == 200) {
// console.log("获取到的openid为:" + res.data)
// that.globalData.openid = res.data
  wx.setStorageSync('openid', res.data),//同步操作
       wx.setStorage({//异步操作
            key: 'userinfo',
           data: true,
        }),
        that.setData({
            userinfo: true
         })
//设置用户信息
wx.getUserInfo({
success: res => {
var u_name = e.detail.userInfo.nickName;
var u_thumb = e.detail.userInfo.avatarUrl;
console.log(u_name);
console.log("aa" + res)
console.log("aa"+res.errMsg)
wx.setStorageSync("avatar", res.userInfo.avatarUrl)
if (res.userInfo.nickName != wx.getStorageSync("nickName")) {
app.util.request({
"url": 'entry/wxapp/TyMember',
data :{
u_name:u_name,
u_thumb:u_thumb
},
method: 'POST',
header: {
'content-type': 'application/json'
},
success: function (res) {
console.log(res);
if (res.statusCode == 200) {
// console.log("获取到的openid为:" + res.data)
// that.globalData.openid = res.data
wx.setStorageSync('u_name', res.data)
wx.getStorageSync('u_thumb', res.data)
} else {
console.log(res.errMsg)
}
},
})
}
}
})
} else {
console.log(res.errMsg)
 
}
}
})
}
 
},
fail: function (err) {
console.info(err.errMsg);
wx: showModal({
title: '警告',
cancelText: '不授权',
confirmText: '授权',
confirmColor: '#37c31a',
content: '若不授权微信登录,则无法使用XXXXXX;点击重新获取授权,则可重新使用;' +
'若点击不授权,将无法使用便捷服务。',
success: function (res) {
if (res.confirm) {
console.log('用户点击确认');
wx.openSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
wx.getUserInfo({
success: res => {
console.log('用户同意授权' + res.userInfo.nickName)
app.util.request({
'url': 'entry/wxapp/TyMember',
data: {
u_name: u_name,
u_thumb: u_thumb
},
method: 'POST',
header: {
'content-type': 'application/json'
},
success: function (res) {
console.log(res);
if (res.statusCode == 200) {
// console.log("获取到的openid为:" + res.data)
// that.globalData.openid = res.data
wx.setStorageSync('openid', res.data)
} else {
console.log(res.errMsg)
}
},
})
}
})
} else {
console.info('再次不允许');
}
}
})
} else if (res.cancel) {
console.log('弹出框用户点击取消')
}
}
})
}
})
 
},

小程序授权demo的更多相关文章

  1. 微信小程序开源Demo精选

    来自:http://www.jianshu.com/p/0ecf5aba79e1 文/weapphome(简书作者)原文链接:http://www.jianshu.com/p/0ecf5aba79e1 ...

  2. 小程序获取openid 小程序授权

    小程序获取openid 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系. wx.login(Object object) 调用接口获取登录凭证(cod ...

  3. 微信小程序 - 授权页面

    小程序授权方式更改以后,我们只有两种选择. 1.在主页使用遮罩层,类似这样的(会造成一点卡顿) 2.新增登陆授权页(经过反复的思考,我还是觉得用这个好) 这个也不错: https://blog.csd ...

  4. 微信 公众号 小程序 授权 unionid 用户信息 实验总结

    -*-*-*-*-*-*-*-*-*--*-*-*-1.小程序通过code获取用户openid的接口,如果用户曾经授权并未过期,或者用户关注过同主体的公众号,会带回unionID,但没有用户头像等信息 ...

  5. 【福利】微信小程序精选Demo合集

    小编最近在开发小程序,也读到了不少优秀的小程序源码,项目中有些需求可以直接从源码里粘贴复制过来,虽然这样做不利于自己独立编写代码,但比较是给公司做项目啊,秉着效率第一的原则,简直没有什么比ctrl+c ...

  6. 完整微信小程序授权登录页面教程

    完整微信小程序授权登录页面教程 1.前言 微信官方对getUserInfo接口做了修改,授权窗口无法直接弹出,而取而代之是需要创建一个button,将其open-type属性绑定getUseInfo方 ...

  7. 02——微信小程序官方demo讲解——app部分

    第一节讲了目录结构,这节主要讲解下目录中app.js部分. 它由三部分组成app.js.app.json与app.wxss 1.JS部分 1.1概述 //app.js App({ onLaunch: ...

  8. 微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。

    在这里给大家分享下我的心得,1.写代码前一定要对整个流程有个了解.我就是因为在先不了解整个过程中去ctrl+c+v他人的博客代码,花费很多无用的时间去处理还不知道能不能跑的起来的代码. 2.本人比较喜 ...

  9. 微信小程序授权登录以及用户信息相关接口调整导致授权框不弹出

    前言:4月8号升级了小程序业务后提交了版本并上线.突然一个同事说体验版的点击"登录"按钮无效.当时觉得应该不会呀,这几天一直用手机调试,每天也在不停的登录授权,弹框一直有的呀.然后 ...

随机推荐

  1. error和exception有什么区别?

    Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题.比如:内存资源不足等.对于这种错误,程序基本无能为力,除了退出运行外别无选择,它是由Java虚拟机抛 ...

  2. Golang中使用kafka

    golang中比较好用的kafka client有 sarama confluent-kafka-go go_kafka_client optiopay-kafka siesta 其中 sarama的 ...

  3. makefile如果没有符合的显式规则将会使用隐式规则

    举例: 当前目录下有个Makefile和jello.c文件,其中有这样的规则jello.o:%.c %.h Makefile (静态模式规则),表明的含义为:要生成的jello.o目标依赖jello. ...

  4. 使用Java Api 操作HDFS

    如题 我就是一个标题党  就是使用JavaApi操作HDFS,使用的是MAVEN,操作的环境是Linux 首先要配置好Maven环境,我使用的是已经有的仓库,如果你下载的jar包 速度慢,可以改变Ma ...

  5. AtomicReference实现单例模式

    CAS是项乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试. 乐观锁的一种实 ...

  6. Gtk 窗口,控件,设置(添加图片等)

    1.关于窗口   // 创建顶层窗体,后面有POPUP的 GtkWidget *main_window; main_window = gtk_window_new (GTK_WINDOW_TOPLEV ...

  7. 洛谷P1803 凌乱的yyy dp

    我要日更嘤嘤嘤>_< 原题戳>>https://www.luogu.org/problem/show?pid=1803<<(其实是戳不动的,复制粘贴吧) 题目背景 ...

  8. log4j2打印Mybatis执行的SQL语句及SQL语句的执行时间

    http://blog.csdn.net/zjq852533445/article/details/78320012

  9. 前端面试题 | JS部分(附带答案)

    目前在找工作,所以各方收集了一堆面试题.其实刷面试题的过程也能更新自己对知识的认识,所以也提醒自己多看多理解.如果对下面题目有更深理解,会实时更新.遇到新题目,也会不定时更新.希望能帮助到部分朋友- ...

  10. 为 10000+ 业务系统提供数据可视化能力的 AntV 又进化了

    小蚂蚁说: 2018 年 AntV 品牌日以知新.知心为主题,旨在让产品一直「知新」,与用户一直「知心」.AntV 是蚂蚁金服全新一代数据可视化解决方案,致力于提供一套简单方便.专业可靠.无限可能的数 ...