Laya 微信小遊戲登入問題
阿新 • • 發佈:2018-11-10
微信官方通知:小程式與小遊戲獲取使用者資訊介面調整,請開發者注意升級。
為優化使用者體驗,使用 wx.getUserInfo 介面直接彈出授權框的開發方式將逐步不再支援。從2018年4月30日開始,小程式與小遊戲的體驗版、開發版呼叫 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);
}
}
});
});
}
}