1. 程式人生 > >Laya 微信小遊戲登入問題

Laya 微信小遊戲登入問題

微信官方通知:小程式與小遊戲獲取使用者資訊介面調整,請開發者注意升級。

為優化使用者體驗,使用 wx.getUserInfo 介面直接彈出授權框的開發方式將逐步不再支援。從2018430日開始,小程式與小遊戲的體驗版、開發版呼叫 wx.getUserInfo 介面,將無法彈出授權詢問框,預設呼叫失敗。正式版暫不受影響。開發者可使用以下方式獲取或展示使用者資訊:

一、小程式:
1、使用 button 元件,並將 open-type 指定為 getUserInfo 型別,獲取使用者基本資訊。
詳情參考文件:
https://developers.weixin.qq.com/miniprogram/dev/component/button.html
2、使用 open-data 展示使用者基本資訊。 詳情參考文件: https://developers.weixin.qq.com/miniprogram/dev/component/open-data.html 二、小遊戲: 1、使用使用者資訊按鈕 UserInfoButton。 詳情參考文件: 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 請各位開發者注意及時調整介面。

所以只能使用createUserInfoButton來登入授權獲取使用者資訊了


checkLogin():void{
        if (Laya.Browser.onMiniGame) {
            var createLoginBtn = this.createLoginBtn;
            wx.getSetting({
                success: function (res) {
                    var
authSetting = res.authSetting if (authSetting['scope.userInfo'] === true) { //使用者已授權,可以直接呼叫相關 API //TODO: 呼叫wx.login, wx.getUserInfo //TODO: 呼叫自己的註冊登入介面 } else if (authSetting['scope.userInfo'] === false){ // 使用者已拒絕授權,再呼叫相關 API 或者 wx.authorize 會失敗,需要引導使用者到設定頁面開啟授權開關 console.log('授權:請點選右上角選單->關於(零下記憶)->右上角選單->設定'); createLoginBtn(); } else { // 未詢問過使用者授權,呼叫相關 API 或者 wx.authorize 會彈窗詢問使用者 createLoginBtn(); } } }); } } createLoginBtn():void{ if (Laya.Browser.onMiniGame) { let sysInfo = wx.getSystemInfoSync(); //獲取微信介面大小 let width = sysInfo.screenWidth; let height = sysInfo.screenHeight; let sdkVersion = sysInfo.SDKVersion; if (sdkVersion >= "2.0.1") { //微信SDK大於2.0.1需要使用createUserInfoButton獲取使用者資訊 } // let x = 226*(width/Laya.stage.width); let y = 760*(height/Laya.stage.height); let w = 279*(width/Laya.stage.width); let h = 96*(height/Laya.stage.height); let x = (width-w)/2; this.wxloginBtn = wx.createUserInfoButton({ type: 'text', text: '微信登入', style: { left: x, top: y, width: w, height: h, lineHeight: h, // backgroundColor: '#7f0000', color: '#dddddd', textAlign: 'center', fontSize: 18, borderRadius: 4 } }) //var caller = this; //var func = this.loginComplete; //登入介面回撥函式 this.wxloginBtn.onTap((res) => { // button.destroy();//隱藏按鈕 var res2 = res; wx.login({ success: function (res) { if (res.code) { //jscode用於後臺解密隱私資料encryptedData,參考https://developers.weixin.qq.com/minigame/dev/document/open-api/login/wx.login.html var jscode=res.code; var userInfo = res2.userInfo var nickName = userInfo.nickName var avatarUrl = userInfo.avatarUrl var gender = userInfo.gender //性別 0:未知、1:男、2:女 var province = userInfo.province var city = userInfo.city var country = userInfo.country var encryptedData = encodeURIComponent(res2.encryptedData);//一定要把加密串轉成URI編碼 var rawData = encodeURIComponent(res2.rawData); var iv = res2.iv; var signature = res2.signature; //TODO: 呼叫自己的註冊登入介面 }else{ console.log('登入失敗!' + res.errMsg); } } }); }); } }