cocos-creator使用记录26_微信登录授权


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();
        }
    }
});
 

你可能感兴趣的:(cocos,creator)