const LoginApi = require('./LoginApi'); const ShareAction = require('../utils/ShareAction'); const artistInvite = [ { title: '脱口秀主持人只能有一个...那就是你!', image: 'talent_1.png' }, { title: '舞王争霸还差你,快来决一高下!', image: 'talent_2.png' }, { title: '的演唱会等你来献唱~', image: 'talent_3.png' }, { title: '新片开等你来主演!', image: 'talent_4.png' }, { title: '的电竞战队需要你来carry!', image: 'talent_5.png' }, ]; class WeChat { constructor() { this.wxWidth = 0;//微信小程序可用屏幕宽度 this.wxHeight = 0;//微信小程序可用屏幕高度 this.js_code = null; } /** * 检查登录态是否已失效 * 回调函数会回传flag值(true:未失效, false:已失效) * @param {Function} cb 回调方法 */ checkLogin(cb) { CC_WECHATGAME && wx.checkSession({ success() { //session_key 未失效 cb && cb(true) }, fail() { //session_key 已失效 cb && cb(false) } }) } /** * 使用存在localStorage中的登录信息进行静默登录 * 不刷新 uid 和 token * @param {Function} cb 回调方法 */ loginStatic(cb) { let userStorage = cc.sys.localStorage.getItem('GlobalUser') if (userStorage) { Global.user = userStorage; cb && cb() } else { this.login(cb) } } /** * 调起一个新的微信登录 * 刷新 token * @param {Function} cb 回调方法 */ login(cb) { this.cb = cb || function () { } if (!CC_WECHATGAME) { Global.user = { uid: 1, token: 'lucifer_test_token', nick: 'lucifer', avatarUrl: 'http://mpic.tiankong.com/f94/72b/f9472be4691ab43e3f6132bb8b63d00a/640.jpg', gender: 1 } this.cb(); return; } this.isSupportInfoBtn = wx.createUserInfoButton ? true : false; wx.login({ success: ({ code }) => { // console.log(code); this.js_code = code; //如果支持用户信息按钮 if (this.isSupportInfoBtn) { wx.getSetting({ success: (res) => { // 已经授权,可以直接调用 getUserInfo 获取头像昵称 if (res.authSetting['scope.userInfo']) { this._getUserInfo() } else { this._createBtn(); } } }) } else { this._getUserInfo() } } }) wx.getSystemInfo({ success: (res) => { Global.os = res.platform == "android" ? 2 : 1; this.wxWidth = res.windowWidth; this.wxHeight = res.windowHeight; } }); } _getUserInfo() { wx.getUserInfo({ withCredentials: true, success: (res) => { this._login(res); } }) } _login(res) { // let loginApi = new LoginApi(); LoginApi.login(this.js_code, res, this.cb); } /** * 创建一个微信环境下,获取登录信息的原生按钮 */ _createBtn() { let width = 167; let height = 88.5; let left = (this.wxWidth - width) / 2; let top = this.wxHeight - 380; console.log('top: ', top); let button = wx.createUserInfoButton({ type: 'image', // text: '点击授权', image: 'https://pub.dwstatic.com/wxgame/allstar/share/startgame.png', style: { left: left, top: top, width: width, height: height, backgroundColor: '#ffffff', borderColor: '#ffffff', borderWidth: 0, borderRadius: 5, color: '#ffffff', textAlign: 'center', fontSize: 16, lineHeight: 88.5, }, withCredentials: true }) button.onTap((res) => { // console.log('res'); // console.log(res); if (res.errMsg == 'getUserInfo:ok') { button.destroy(); this._login(res); } }) return button; } inviteFriendPromise() { return this._invite(ShareAction.ADD_FRIEND, '确认过眼神,你就是我要的C位', 'share1.jpg'); } inviteArtistPromise() { let content = artistInvite[Math.floor(Math.random() * 5)]; return this._invite(ShareAction.BECOME_ARTIST, content.title, content.image); } _invite(action, title, image) { return new Promise((resolve, reject) => { if (!CC_WECHATGAME) { reject(); } wx.shareAppMessage({ title: Global.user.nick + title, imageUrl: 'https://pub.dwstatic.com/wxgame/allstar/share/' + image, query: 'uid=' + Global.user.uid + '&shareType=' + action, success: resolve, fail: reject }); }); } } module.exports = new WeChat();