游戏服务器引擎Matchvs游戏云第三方绑定教程 - Go语言中文社区

游戏服务器引擎Matchvs游戏云第三方绑定教程


 

众所周知,Matchvs是国内一款专注于移动游戏的游戏服务器引擎。开发者通过接入Matchvs的SDK,即便没有服务器开发人员,也可以轻松完成联网游戏的开发。近期,Matchvs开放了第三方绑定功能,一起来了解一下。

Matchvs 服务器会通过注册接口下发“用于在服务器校验的 userID”,开发者在使用时,可将此 userID 与自己游戏的玩家ID进行绑定。

为了方便开发者使用,Matchvs 提供了第三方绑定功能。开发者可以直接调用绑定接口,传入 openID 即可获取绑定后的 Matchvs userID 。如果开发者使用绑定接口,则无需再调用注册接口获取 userID。

获取 openID

  • 调用 wx.login接口获取 code 参数。示例代码如下:
function getUserOpenID(obj) {
    var callObj = obj;
    if( typeof(wx) == "undefined"){
        return;
    }
    wx.login({
        success: function (res) {
            var wcode = res.code;
            console.info("you code"+wcode);
            // 使用 code 请求你的 获取openID的服务
        },
        fail: function (res) {
            console.log("get code failed:",res);
        },
    });
}
  • 调用 code2accessToken 接口获取openID ,获取openID 操作最好是在自己的服务端接口获取,然后再返回。 code2accessToken 这个接口需要你的微信小游戏 secret。获取openID 示例:
wx.request({
    url: "这个是您的获取 openID 地址接口",
    method: "GET",
    data: {
        code: wcode//这个是您的接口参数 code 是wx.login 返回的
    },
    success: function (res) {
        console.info("获取到openID 和 session_key");
    },
    fail:function(res){
        console.info("getOpenID failed");
    }
});

获取 openID 可参考 微信小游戏开发文档 code2accessToken 接口和 wx.login 接口。

调用绑定接口

获取到微信用户信息和 openID后, 再调用 matchvs 第三方账号绑定接口获取 Matchvs 用户信息。

这里以 egret 代码请求为例:

/**
 * 绑定微信OpenID 返回用户信息
 * @param wxUserInfo 获取的 openID 信息和 微信的 userInfo
 */
private static bindOpenIDWithUserID(wxUserInfo:any){
    console.log("获取到的微信用户信息",wxUserInfo);
    let reqUrl = "http://vsuser.matchvs.com/wc6/thirdBind.do?";
    let appKey = "xxxxxxxxxx";
    let secretKey = "xxxxxxxxxx";
    //sign=md5(appKey&gameID=value1&openID=value2&session=value3&thirdFlag=value4&appSecret)
    let params = appKey+"&gameID="+GameData.gameID+"&openID="+wxUserInfo.openInfo.openid+"&session="+wxUserInfo.openInfo.session_key+"&thirdFlag=1&"+secretKey;
    //计算签名
    let signstr = md5(params);//MD5 需要自己找方法
    //重组参数 userID 传0
    //用于post请求,不能使用get请求,如果使用get请求可能会出现签名失败,因为微信session_key有需要url编码的字符
    let jsonParam = {
        userID:0,
        gameID:GameData.gameID,
        openID:wxUserInfo.openInfo.openid,
        session:wxUserInfo.openInfo.session_key,
        thirdFlag:1,
        sign:signstr
    };
    var request = new egret.HttpRequest();
    request.responseType = egret.HttpResponseType.TEXT;
    request.open(reqUrl,egret.HttpMethod.POST);
    request.setRequestHeader("Content-Type", "application/json");
    request.send(jsonParam);

    request.addEventListener(egret.Event.COMPLETE,(event:egret.Event)=>{
        var request = <egret.HttpRequest>event.currentTarget;
        console.log("bindOpenIDWithUserID get data : ",request.response);
        let repData = JSON.parse(request.response);
        console.log("bindOpenIDWithUserID repData : ",repData);
        //绑定成功
        if( repData.status == 0){
            //绑定成功就会返回 userID等信息
            let id = repData.data.userid;
            let name = wxUserInfo.userInfo.nickName;
            let avatar = wxUserInfo.userInfo.avatarUrl;
            let token = repData.data.token;
            //绑定成功就可以登录 matchvs
        }
    },this);
}

注意:调用第三方绑定接口请求参数 userID 传 0,如果是第一次绑定,接口会返回新的Matchvs userID ,如果已经绑定过,接口会返回您绑定了的Matchvs userID 信息。

thirdBind.do

第三方绑定接口,传入您的唯一身份识别号和一个session_key 实现 userID绑定。

请求地址

请求参数

参数 类型 默认值 是否必填 说明
userID number 0 用户ID默认填0
gameID number   你注册的游戏ID
openID string   获取第三方唯一认证号
session string   校验值
thirdFlag number   1-微信
sign string   参数签名

sign 计算方式:md5(appKey&gameID=value1&openID=value2&session=value3&thirdFlag=value4&appSecret)得到的md5值就是 sign参数的值。

appkey 和 appSecret 是在 matchvs 官网创建游戏时的信息。

有效信息验证

在调用 thirdBind.do 接口时,传入的 openID 可以进行有效性检测,即验证 openID 是否合法,确保信息安全。官网-> 控制台->我的游戏->设置-> 安全校验 配置有效性检测的接口地址。

注意:安全校验接口需要开发者自己实现,接口规范见下方。

配置好回调地址后,调用 thirdBind.do 就会回调这个地址检测 openID 信息是否有效。

如果没有配置 安全校验是不校验的。

安全校验接口要求如下:

  • 请求 method: POST
  • Content-Type: application/json
  • 请求参数:
{
    "thirdFlag": 1,
    "openID": "0123456789ABCDEF",
    "session": "123reqafg9dfa0tja"
}
  • 返回参数:
{
    "data": {
        "result": 0
    },
    "status": 0
}

返回参数 data.result = 0 表验证通过,其他值标识验证失败。

有关第三方绑定使用方法,可参考Demo

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/matchvs/article/details/80964461
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢