转载自 https://blog.csdn.net/haibo19981/article/details/81224162
1.前言
http://forum.cocos.com/t/topic/59471
为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持。
从2018年4月30日开始,小程序与小游戏的体验版、开发版调用 wx.getUserInfo 接口,
将无法弹出授权询问框,默认调用失败。正式版暂不受影响。开发者可使用以下方式获取
或展示用户信息:
小游戏:
(1)使用用户信息按钮 UserInfoButton。登录授权。
wx.createUserInfoButton
https://developers.weixin.qq.com/minigame/dev/document/open-api/user-info/wx.createUserInfoButton.html
(2)开放数据域下的展示用户信息。排行榜。
https://developers.weixin.qq.com/minigame/dev/document/open-api/data/wx.getUserInfo.html
注意:必须在真机上调试,才能显示,微信开发工具不能显示这个按钮。
按以上方法(1),创建的按钮的图片必须是来自远程服务器的,在2018.7.22后,更新最新的微信开发者工具后,
貌似可以使用本地图片了。
微信的屏幕坐标系:
(1)微信的坐标系在屏幕左上角。
(2)iPhone6在开发者工具中的分辨率为375*667 Dpr:2,对应微信屏幕宽高就是375*667,实际屏幕分辨率要乘以2。
2.代码
var common = require("zqddn_zhb_Common"); //全局变量
cc.Class({
extends: cc.Component,
properties: {
posNode: cc.Node, //目标位置节点
urlIndex: 1, //按钮图片链接索引
},
onEnable: function(){
var self = this;
//按钮坐标
self.left = width/2 - btWidth/2;
self.top = height/2 - btHeight/2;
//按钮图片
if(this.urlIndex == 1){
self.url = "https://www.mysite.cn/wb_webview/zqddn_zhb/zqddn_zhb_loginBtn.png";
}else if(this.urlIndex == 2){
self.url = "https://www.mysite.cn/wb_webview/zqddn_zhb/zqddn_zhb_loginBtn.png";
}else if(this.urlIndex == 3){
self.url = "https://www.mysite.cn/wb_webview/zqddn_zhb/zqddn_zhb_loginBtn.png";
}
if(self.button){
self.button.show();
}else{
if(!(cc.sys.platform === cc.sys.WECHAT_GAME)) return;
wx.getSystemInfo({
success(res){
var width = res.screenWidth;
var height = res.screenHeight;
var btWidth = 424/2.2; //这里只是简单的认为Dpr 2.2
var btHeight = 148/2.2;
self.button = wx.createUserInfoButton({
type: "image",
image: self.url,
style: {
left: width/2 - btWidth/2,
top: height/2 - btHeight/2 + 200,
width: btWidth,
height: btHeight,
}
})
self.button.onTap((res1) => {
wx.getSetting({
success(auths){
if(auths.authSetting["scope.userInfo"]){
console.log("==已经授权===")
wx.login({
success(res2){
//获得个人信息
wx.getUserInfo({
withCredentials: true,
lang: 'zh_CN',
success(res3){
common.userLoginData.avatarUrl = res3.userInfo.avatarUrl;
common.userLoginData.nickName = res3.userInfo.nickName;
common.userLoginData.iv = res3.userInfo.iv;
common.userLoginData.encryptedData = res3.userInfo.encryptedData;
cc.sys.localStorage.setItem("zqddn_zhb_userLoginData", JSON.stringify(common.userLoginData));
},
fail(){
console.log("login:获取自己的信息失败");
}
})
self.node.active = false;
}
})
}else{
console.log("==拒绝授权===")
self.node.active = false;
}
}
})
})
self.button.show()
}
})
}
},
onDisable: function(){
if(this.button){
this.button.hide();
}
}
});