概述
关系链模块是MSDK提供的,以手Q、微信的好友关系为基础的信息查询服务,关系链模块提供以下功能场景:
显示详情接入向导
1 前置条件
1)您已经按初始化模块说明完成 初始化。
2)确认用户已经完成手Q/微信授权登录
2 参考Demo示例
1)手Q个人信息示例参考 com\example\module\submodule\Example\QQModule.java 文件的 callWGQueryQQUserInfo() 方法。
2)手Q好友示例参考 com\example\module\submodule\Example\QQModule.java 文件的 callWGQueryQQGameFriendsInfo() 方法。
3)微信个人信息示例参考 com\example\module\submodule\Example\WXModule.java 文件的 callWGQueryWXUserInfo() 方法。
4)微信好友示例参考 com\example\module\submodule\Example\WXModule.java 文件的 callWGQueryWXGameFriendsInfo() 方法。
查询个人信息
1、概括说明
1)手Q用户(WGQueryQQMyInfo) 用户通过手Q授权后, 游戏需要用户昵称, 头像等其他信息,可调用 WGQueryQQMyInfo ,个人信息包含: 昵称(nickname)、OpenId(openId)、头像小图(pictureSmall)、头像中图(pictureMiddle)、头像大图(pictureLarge).
2)微信用户(WGQueryWXMyInfo) 用户通过微信授权后, 游戏需要用户昵称, 头像等其他信息,可调用 WGQueryWXMyInfo ,个人信息包含: 昵称(nickname)、OpenId( openId)、头像小图(pictureSmall)、头像中图(pictureMiddle)、头像大图(pictureLarge).
2、注册回调
1)功能描述
为接收msdk的关系链回调,游戏需要注册回调函数进行处理,建议在游戏的onCreate函数中进行注册
2)接口声明
void WGSetObserver(WGPlatformObserver *pObserver);
3)参数说明
参数名称 | 类型 | 说明 |
---|---|---|
observer | WGPlatformObserver类 | MSDK回调类,参考示例代码 |
4)返回值
无,在回调OnRelationNotify函数处理
返回值名称 | 类型 | 说明 |
---|---|---|
relationRet | RelationRet | 关系链结构体 |
5)示例代码
class GlobalCallback : public WGPlatformObserver
{
public:
virtual void OnRelationNotify(RelationRet &relationRet)
{
LOGD("OnRelationCallBack flag:%d ", relationRet.flag);
LOGD("OnRelationCallBack desc:%s ", relationRet.desc.c_str());
LOGD("OnRelationCallBack friends total:%d ", relationRet.persons.size());
// TODO GAME 这里应该也要返回平台
std::stringstream ss;
ss << "OnRelationNotify";
ss << "flag:" << relationRet.flag << " friends total:" << relationRet.persons.size();
ss << " type:" << (int)relationRet.type;
switch (relationRet.flag)
{
case eFlag_Succ:
{
// relationRet.persons.at(0) 中保存的即是个人信息
for (int i = 0; i < relationRet.persons.size(); i++)
{
std::string nickName = relationRet.persons.at(i).nickName;
std::string openId = relationRet.persons.at(i).openId;
std::string pictureLarge = relationRet.persons.at(i).pictureLarge;
std::string pictureMiddle = relationRet.persons.at(i).pictureMiddle;
std::string pictureSmall = relationRet.persons.at(i).pictureSmall;
ss << "nickName=" << nickName << "&";
ss << "openId=" << openId << "&";
ss << "pictureLarge=" << pictureLarge << "&";
ss << "pictureMiddle=" << pictureMiddle << "&";
ss << "pictureSmall=" << pictureSmall << "&";
}
break;
}
default:
break;
}
displayResult(ss.str());
}
virtual ~GlobalCallback()
{
}
};
6)特殊说明
无
7)名称解释
无
3、调用接口
1)功能描述
游戏可以通过调用WGQueryQQMyInfo/WGQueryWXMyInfo 接口查询个人信息以获取:昵称(nickname)、OpenId( openId)、头像小图40x40(pictureSmall)、头像中图60x60(pictureMiddle)、头像大图100x100(pictureLarge)、
2)接口声明
bool WGQueryQQMyInfo();
bool WGQueryWXMyInfo();
3)参数说明
无
4)返回值
无,结果通过 OnRelationNotify 回调,设置回调参考注册回调
5)示例代码
WGPlatform::GetInstance()->WGQueryQQMyInfo(); // 查询手Q用户个人信息
WGPlatform::GetInstance()->WGQueryWXMyInfo(); // 查询微信用户个人信息
6)特殊说明
个人信息中是没有OpenId信息,需要OpenId信息可以通过登陆模块获取票据接口WGGetLoginRecord获取。
如果业务有修改手Q玩家头像尺寸需求,注意不要改变原链接字段拼接结构
以下为手Q平台侧玩家个人头像返回链接样式,供业务参考,以平台最终返回为准
- 正常身份:http://thirdqq.qlogo.cn/g?b=oidb&k=6AJZXGDES1gHgiaK9kbIJlA&s=100&t=1466475684
- 虚拟账号身份:http://thirdqq.qlogo.cn/qqopen/ZdvYp9s7k6o0mHZMOqNJ3Na28broRWwlTZtH7ZzuYrIibicBOy2ZNXMDlBricO1hh6G/100?v=ac9c
- 平台兜底:https://q.qlogo.cn/qqapp/1106977030/9C38601899722D920F157C8B510F3E36/100
7)名称解释
无
查询同玩好友信息
1、概括说明
1)手Q用户(WGQueryQQGameFriendsInfo) 用户通过手Q授权后, 可以通过WGQueryQQGameFriendsInfo拉取游戏内好友信息(例如好友高分排行). 好友的信息字段参考个人信息字段
2)微信用户(WGQueryWXGameFriendsInfo) 用户通过微信授权后, 可以通过WGQueryWXGameFriendsInfo拉取游戏内好友信息(例如好友高分排行). 好友的信息字段参考个人信息字段
2、注册回调
该接口与查询个人信息接口使用同一个回调如果已经设置了就不需要重复设置,没有设置请查看回调设置 RelationRet对象的persons属性是一个List, 其中的每个PersonInfo 对象即是好友信息, 好友信息包含: 昵称(nickname)、OpenId(openId)、头像小图40x40(pictureSmall)、头像中图60x60(pictureMiddle)、头像大图100x100(pictureLarge).
3、调用接口
1)功能描述
游戏可以通过调用WGQueryQQGameFriendsInfo/WGQueryWXGameFriendsInfo 接口查询玩当前游戏的好友信息以获取:昵称(nickname)、OpenId(openId)、头像小图40x40(pictureSmall)、头像中图60x60(pictureMiddle)、头像大图100x100(pictureLarge).
2)接口声明
bool WGQueryQQGameFriendsInfo();
bool WGQueryWXGameFriendsInfo();
3)参数说明
无
4)返回值
无,结果通过OnRelationNotify回调,设置回调参考注册回调
5)示例代码
WGPlatform::GetInstance()->WGQueryQQGameFriendsInfo(); // 查询手Q用户同玩好友信息
WGPlatform::GetInstance()->WGQueryWXGameFriendsInfo(); // 查询微信用户同玩好友信息
6)特殊说明
1)为了避免当获取个人信息(比如头像、名字)、 好友信息(比如头像、名字)失败时,导致游戏登入失败,请将查询个人信息、查询好友信息设置为非关键路径。
2)手Q、微信查询同玩好友的结果包含自己的信息。
3)V3.3.21 版本开始新增关系链回调接口中用户未授权错误码;若用户未授权关系链权限,则在回调接口OnRelationNotify
中,relationRet.flag = eFlag_UnPermission(-9)。
4)V3.3.28 版本开始 WGQueryWXGameFriendsInfo 接口新增返回 friendRemark(备注名) 字段。
注意:MSDK V3 联调环境、正式环境默认兼容老方案(nickName 优先使用微信好友备注,不返回 friendRemark 字段),如果业务侧需要切换使用新方案(nickName 对应微信昵称,friendRemark 对应微信好友备注),需要联系 MSDK 侧对业务进行配置更新启用新方案。
7)名称解释
同玩好友:玩当前游戏的好友玩家
非关键路径:是指不影响游戏登录过程的一种说法;msdk将手Q\微信的登录过程定义为关键路径,登录过程一旦被打断将对游戏的正常进行造成严重影响。
添加QQ好友
1)概括说明
玩家可以在游戏中直接添加(拉起手Q)游戏玩家为QQ好友(多次点击不会发送多条添加QQ申请)。
2)注册回调
无
3)调用接口
1)功能描述
玩家可以在游戏中直接加其他游戏玩家为QQ好友。
2)接口声明
void WGAddGameFriendToQQ(unsigned char *fopenid, unsigned char *desc, unsigned char *message);
3)参数说明
参数名称 | 类型 | 说明 |
---|---|---|
fopenid | unsigned char * | 要添加好友的openid |
desc | unsigned char * | 要添加好友的备注信息 |
message | unsigned char * | 添加好友时发送的验证信息 |
4)返回值
无
5)示例代码
WGPlatform::GetInstance()->WGAddGameFriendToQQ((unsigned char *)"35A1B153235B0844BC74AB50F8FAD91F",
(unsigned char *)"callWGAddGameFriendToQQ",
(unsigned char *)"add");
6)特殊说明
无
7)名称解释
无