cocos creator 小游戏接入微信登录、分享等功能

1、微信登录

使用cocos creator开发的微信小游戏,只有接入微信的授权登录信息才能获取用户的头像、昵称等基本信息,方便在游戏中使用。接入微信登录也是比较简单,只需要在游戏中调用wx.login接口就可以。为了使用户进入游戏必须的得到微信的授权信息,一般会在游戏的主界面调用wx.login接口,接口调用必须是在cocos creator脚本的start()方法中,在onload()中调用是不会生效的。一下是微信登录授权的具体代码实现:

//start方法

start() {

        if(WECHAT){

            //微信登录

            this.wxLogin();

        }

    }

//调用微信接口

wxLogin(){

        let sysInfo = wx.getSystemInfoSync();

    // 获取微信界面大小

    let screenWidth = sysInfo.screenWidth;

    let screenHeight = sysInfo.screenHeight;

    let self = this

    wx.login(

      {

          success: (res) =>

          {

              if (res.code)

              {

                  let code= res.code;

                  console.log("登陆成功,获取到code:", code)

                  wx.request({

                    url:GLOBAL_REQUEST_URL,

                    data:{

                        "code":code

                    },

                    success (res) {

                        //res.data 就是返回的json 字符串解解析后的数据 res.data.account.sdkId

                        console.log("login result:"+res.data)

                        //let loginResult = JSON.parse(res);

                        // loginResult.get

                      }

                  });

              }

              var button = wx.createUserInfoButton(

              {

                  type: 'text',

                  text: '',

                  style: {

                    left: 0,

                    top: 0,

                    width: screenWidth,

                    height: screenHeight,

                    lineHeight: 40,

                    backgroundColor: '#00000000',

                    color: '#ffffff',

                    textAlign: 'center'

                  }

              })

              button.onTap((res) =>

              {

                  if(res.errMsg=="getUserInfo:ok")

                  {

                      console.log("授权用户信息")

                      //获取到用户信息

                      // let userInfo = res.userInfo

                      // self.wxLogin(userInfo);

                        wx.getUserInfo({ 

                            lang:"zh_CN",

                            success: function(res) { 

                              let userInfo = res.userInfo

                              let  avatarUrl = userInfo.avatarUrl

                              assetManager.loadRemote(avatarUrl,{ ext: '.png' },(err, spriteFrame)=>{

                                if(err){

                                    return;

                                }

                                DownloadResource.avartarSpriteFrame = SpriteFrame.createWithImage(spriteFrame as ImageAsset);

                            });

                              console.log(userInfo)

                            },

                            fail:function(){

                              console.log("获取失败");

                              return false;

                            }

                          })

                      //清除微信授权按钮

                      button.destroy()

                  }

                  else

                  {

                      console.log("授权失败")

                  }

              })

          }

        })

    }

以上实现的的是在游戏主界面创建一个和屏幕大小一样大的透明的按钮,用户在进入主界面的时候,点击主界面的任何位置都会触发微信授权登录。

微信登录授权成功之后会回返回给客户端一个code,客户端可以发送code到我们自己的服务器,服务器接收到code之后,将code 作为参数(当然还需要appId和appSecret,这两个参数都是在微信开发后台可以查询到的),微信服务器请求获取用户的openId,用户的openId是唯一的,所以我们就一根据用户的openId生成自己的账号信息。具体的登录九成如下图所示:


2、微信分享功能接入

微信分享功能分为主动分享和被动分享。

主动分享:用户点击游戏中的分享按钮激活分享功能,可以分享到朋友圈和好友

被动分享:用户点击小游戏的右上角的分享,是微信小游戏自带的。

我们先来看一下如何实现被动分享,被动分享也是只要在start()方法里面调用wx.showShareMenu接口即可激活被动分享,代码如下:

start() {

        if(WECHAT){

            //激活右上角分享,被动分享

            this.wxActivePassiveShare();

        }

    }

//调用微信被动分享接口

wxActivePassiveShare(){

        wx.showShareMenu({

            withShareTicket: true,

            menus: ['shareAppMessage', 'shareTimeline']

          });

          resources.load("share/share", (err, data)=>{

            console.log("hahahhaha:"+data.nativeUrl);

            wx.onShareAppMessage(()=>{

                return {

                    title:"大家一起来吃瓜",

                    imageUrl:data.nativeUrl,

                    success(res1){

                        console.log("passive share successfully!");

                    },

                    fail(res2){

                        console.log("passive share failed!");

                    }

                }

            });

          });

          resources.load("share/share", (err, data)=>{

            wx.onShareTimeline(()=>{

                return {

                    title:"大家一起来吃瓜",

                    imageUrl:data.nativeUrl,

                    success(res1){

                        console.log("passive share successfully!");

                    },

                    fail(res2){

                        console.log("passive share failed!");

                    }

                }

            });

          });

    }

主动分享也是同样简单,不过需要把点击事件放到分享按钮上,点击按钮触发事件在这里不做讲解,下面我们来看触发的事件如何实现,具体代码如下:

onClickShareButton(){

        resources.load("share/share", (err, data)=>{

            console.log("hahahhaha:"+data.nativeUrl);

            wx.shareAppMessage(()=>{

                return {

                    title:"大家一起来吃瓜",

                    imageUrl:data.nativeUrl,

                    success(res1){

                        console.log("active share successfully!");

                    },

                    fail(res2){

                        console.log("active share failed!");

                    }

                }

            });

          });

    }

讲解了如何获取微信授权、实现分享等功能,其实还是比较简单的,只要在合适的位置调用微信相关的接口就可以了。另外cocos creator小游戏可以发布到不同的平台运行,所以我们在调用微信接口的时候需要判断当前小游戏的运行环境是不是微信小游戏环境。cocos creator中定义了常量来标记是当前环境是不是微信小游戏环境,对应代码里面的if(WECHAT)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容