12/12/2024 11:37:56
好友关系链
一、同玩好友(不包含自己)
手Q/微信渠道拉取好友关系链需要到平台侧申请关系链权限,为了方便业务接入,飞鹰集成了快速申请权限的通道,飞鹰系统 -> 左侧菜单 MSDK接入->特殊权限申请->手Q关系链/微信关系链。
目前支持渠道:QQ、WeChat、Facebook、garena、VK、steam。
1.1 接口名
/v2/friend/friend_list
1.2 请求参数
参数 | 类型 | 描述 |
---|---|---|
openid | string | 【必填】用户唯一标识 |
token | string | 【必填】用户登录态 |
sub_channelid | int | 【选填】查询当前账号绑定的其他渠道的同玩好友时传入,用于指定需要查询的渠道,取值可以参考服务端API说明 |
1.3 返回参数
参数 | 类型 | 描述 |
---|---|---|
ret | int | 返回码 0:正确,其他:失败 |
msg | string | 返回结果详细说明 |
lists | array | 同玩好友个人信息列表 |
is_lost | int | 仅 QQ 渠道需要关注: 值为 0,说明手Q返回的好友数据正常。业务可直接使用返回的好友数据; 值为 1,是手Q的一个降级方案,表示可能拉取的数据不全。如果业务接受降级可选择使用不全的数据,反之可认定为失败; |
lists说明
lists {
string openid; // 用户标识
string user_name; // 昵称
int gender; // 性别,未定义:0,男:1,女:2。手Q渠道固定返回 0,微信不支持该字段
string picture_url; // QQ/微信好友头像 URL
string country; // 国家
string provice; // 省份
string city; // 城市,微信不支持该字段
string language; // 语言
string nick_name; //(仅微信支持)好友在社交渠道的昵称,先确认字段存在后再取值,因为权限正常且微信正常返回昵称时该字段才存在
string friend_remark; //(仅微信支持)好友备注名,先确认字段存在后再取值,因为权限正常且微信正常返回昵称时该字段才存在
}
特别说明
- user_name 会随时根据策略进行管控,如有明确使用微信备注名的需求,请务必使用 friend_remark 来获取;新接入业务 user_name,默认只返回昵称;
- 针对新业务,昵称应该使用 nick_name 字段,如果需要好友备注,需要走申请报备流程,确认好友备注使用的合规性再使用 friend_remark 字段;
- QQ 好友头像 URL,必须在 URL 后追加参数 /40 或 /100。这样可以分别获得 <40*40>(/40) 或 <100*100>(/100) 规格的图片;
100*100>40*40> - 微信好友头像 URL,必须在 URL 后追加参数 /0、/46、/64、/96 或 /132。这样可以分别获得原始图片(/0)、<46*46>(/46)、<64*64>(/64)、<96*96>(/96) 或 <132*132>(/132) 规格的图片;
132*132>96*96>64*64>46*46> - 海外渠道如 Facebook 为了出海游戏符合 GDPR 规范,好友信息的性别信息固定返回 0;
- 没有同玩好友时,回包中没有 lists 字段是正常现象;
1.4 请求示例
微信渠道
- 请求
{ "openid": "13601369187816917176", "token": "61_nTO2IrYUm4KTM58tuZYZR8wZMbjyDJWndI_AMzuIKjAOGDobd94FtNLaiH8KmB774Q40xDo14hjnmHi_mZocsuACKV3GVps7gPXr-glx4Ts" }
- 回包
{ "ret": 0, "msg": "", "lists": [ { "user_name": "zzz", "picture_url": "https://wx.qlogo.cn/mmhead/No0JxNE4LEUcXM5dmgJcjEadU8jllM45SGtOHxsmiafM", "provice": "", "openid": "6292984005760995448", "nick_name": "Σ( ̄。 ̄ノ)ノ", "friend_remark": "小张" }, { "user_name": "小佳", "picture_url": "https://wx.qlogo.cn/mmhead/Zc9yUpJNc2MVN3IzgUtL9BsfA09pp4MSaaib8nSDb03M", "provice": "", "openid": "18182179939911361117", "nick_name": "小佳" } ], "seq": "1664333165-3965425163-019804-0315511573" }
手Q渠道
请求
{ "openid":"4724195171999796436", "token":"27A50B44430AAD6BFFBE09BA875E48BB" }
- 回包
{ "ret": 0, "msg": "", "lists": [ { "user_name": "小张", "gender": 0, "picture_url": "https://q.qlogo.cn/qqapp/1106977030/A7DB20EFF6DD4A617367B71186DB33A6/", "openid": "14882639338379730531" }, { "user_name": "小佳", "gender": 0, "picture_url": "https://thirdqq.qlogo.cn/qqopen/ZdvYp9s7k6qJuCiaNlJR3hT5vtL0rJxiclJ814gxnmuKYXv0xs04j1WWUoKX1u1MlE/", "openid": "15991060247728890761" } ], "is_lost": 0, "seq": "1664333315-0844862987-022347-0109203549" }
二、获取未注册手Q好友/微信密友
2.1 接口名
/v2/friend/recall_friends_list
2.2 接口说明
重要:获取未注册手Q好友/微信密友(关系链推广员能力),在游戏内调用时会获取未经授权的用户数据,经《个人信息保护法》评估须进行改造,请已接入使用的项目组关注。未接入的游戏暂停接入申请。
① 平台改造方案:在游戏内该接口将返回“无推荐好友”的空数据,请项目组关注用户界面处理,必要时需隐藏游戏内使用未注册密友/推广员的界面入口。
② 生效时间:2021年11月5日 18:00 前。
手Q平台公告详情可咨询 qqconnecthelper(QQ互联及登录咨询);
微信平台公告详情可咨询 wxgame(微信游戏助手) 或参见 https://mmgame.oa.com/index.html#/announce/detail?id=174 。
2.3 请求参数
参数 | 类型 | 描述 |
---|---|---|
openid | string | [必填]用户 openid |
token | string | [必填]用户 token |
task_id | int | [微信必填]任务 id,向微信申请时获得 |
count | int | [手Q必填]期待拉取好友的个数,建议填写 20(不要超过 20,最多返回20个好友) |
2.4 返回参数
参数 | 类型 | 描述 |
---|---|---|
ret | int | 返回码,0 :成功,其他:失败 |
msg | string | 返回信息 |
result | object | 返回结果对象,微信和手Q分别描述 |
1)微信 result 结构
参数 | 类型 | 描述 |
---|---|---|
friend_list | array | 密友列表 |
model_id | int | 模型 id |
send_list | array | 发送列表 |
2)手Q result 结构
参数 | 类型 | 描述 |
---|---|---|
friend_list | array | 未注册好友列表 |
注意:friend_list 列表中每个对象包含 sopenid、head_img_url、nick_name 三个字段
2.5 请求示例
# 微信
curl -X POST -H 'Content-Type: application/json' 'https://hktest.itop.qq.com/v2/friend/recall_friends_list?channelid=1&conn=&gameid=12&os=1&seq=&source=0&ts=1570764309&version=2.0&sig=cae2c68c247db13d0d9e111f90f0eb54' -d '{"openid":"3505996091832136773","token":"26_cUcJse2lEvZP9SojX5Oc-EKdaFV96i-sMOOCL3OB_fMSiwmq6wjC4e3tOj_zW7f8U3j8BAqBjwNaJPdR70U76B-hRkkgs1CMcVhLLiVj86U","task_id":0}'
{
"msg": "success",
"result": {
"friend_list": [
{
"sopenid": "sHlap1bakvTsj1fyeeWxPoIW5OiY",
"head_img_url": "http://wx.qlogo.cn/mmopen/vi_32/298Iynvq8598KfjWKRxHX0w2P1icnoE1mnj6BlOBicEOAoG6qbl6oD6Csumiaq2LFIsiat5ZZAsN95SRDULfoiaob4g/0",
"nick_name": "弓长月半月半"
},
{
"sopenid": "sHlap1V3R7QDESg-WgyRfXI5ZKcI",
"head_img_url": "http://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTIAmxdv26icib4TayhbZqqdJ49Zvwicukf8vJw6zCgPdDAYxMEG37tkkmg54Y8zrObeFCKpKMcRaMGzg/0",
"nick_name": "林"
}
],
"model_id": 0,
"send_list": []
},
"ret": 0,
"seq": "1570770148-0268717065-046971-0000003701"
}
# 手Q
curl -X POST -H 'Content-Type: application/json' 'https://hktest.itop.qq.com/v2/friend/recall_friends_list?channelid=2&conn=&gameid=12&os=1&seq=&source=0&ts=1572523399&version=2.0&sig=a8598291194154e79cb6b7c0a6f40e55' -d '{"token":"D46EF700A328F58231FF69045A54C91D","openid":"15879468368890148661","count":20}'
{
"msg": "success",
"ret": 0,
"result": {
"friend_list": [
{
"sopenid": "ChBBXeAbRjqUbDa8zZ8K_A1oNBKBAWK9mxgNDNwJIxBYd6IWho2aWtjfbWqkjpi7",
"nick_name": "禾苗苗芋头",
"head_img_url": "https://thirdqq.qlogo.cn/qqapp/1106977030/B784C3A8411A406546E40DCD9D898635/100"
},
{
"sopenid": "NYcNfgzl7EIk5d96VCJOYJtHI3wYf0qUOqG5X8ilZGW8lMlr2v0QtXUkcXQrH4d3",
"nick_name": "运营开发-蒋慧强",
"head_img_url": "https://thirdqq.qlogo.cn/qqapp/1106977030/255E40A981DF206E75975A7440098C1D/100"
},
{
"sopenid": "ajOYNtR74_zxjXaKF6h-0GuOCNhXuCrtGS_ADdx3D_V-9Jb_wsQOvYbHjUXZaCUs",
"nick_name": "纳斯达.α",
"head_img_url": "https://thirdqq.qlogo.cn/qqapp/1106977030/DF5130F8023DFE197B121346B10EB9FA/100"
},
{
"sopenid": "P61CN9sYPuDO05-ydiefCUGYKGzPE8avgAhhMVlUBQVu7-VAq1CclagM2qo5f_R8",
"nick_name": "王志波",
"head_img_url": "https://thirdqq.qlogo.cn/qqapp/1106977030/56ED3920969AFAD056EB83A323B1155D/100"
}
]
},
"seq": "1572525472-0016777343-022540-0000000191"
}
特别说明
- 调用微信密友接口需要申请权限,微信密友文档参考:https://mmgame.oa.com/doc/#/article/144;
- 权限申请流程:
1.产品参考”微信密友文档“中模板发送邮件申请;
2.开发发起线上申请(https://weixin.oa.com/open_broker/ ),需要双方总监审批通过;
3.测试环境调用接口当前需要联系@mmgame_helper(微信游戏开发助手)进行 appid 同步(正式环境绑定需要游戏过了 pr1 之后联系协同操作);
三、获取 sopenid(仅QQ、微信渠道支持)
3.1 接口名
/v2/profile/get_sopenid
3.2 请求参数
参数 | 类型 | 描述 |
---|---|---|
openid | string | [必填]用户 openid |
token | string | [必填]用户 token |
3.3 返回参数
参数 | 类型 | 描述 |
---|---|---|
ret | int | 返回码,0 :成功,其他:失败 |
msg | string | 返回信息 |
result | object | 返回结果对象,微信和手Q分别描述 |
3.4 请求示例
# 微信
curl -X POST -H 'Content-Type: application/json' 'https://test.itop.qq.com/v2/profile/get_sopenid?channelid=1&conn=&gameid=12&os=1&seq=&source=0&ts=1572523399&version=2.0&sig=b7724e08bc2627576391104c340df9bd' -d '{"token":"27_l7XUrQiS8dyqIA4vGGqfjJsVwVBl0EKl30kaArFK6ALSPRXseyJsDw2qZDd6Hl6UgvsLhe5cLEL2aJ5_j5Od1JrEaFwMOIOQ9aAd578sfyQ","openid":"3505996091832136773"}'
{
"ret": 0,
"msg": "success",
"sopenid": "sHlap1b2ZKIs92noWooBci31u9Y8",
"seq": "1572525723-0016777343-022546-0000000075"
}
# 手Q
curl -X POST -H 'Content-Type: application/json' 'https://test.itop.qq.com/v2/profile/get_sopenid?channelid=2&conn=&gameid=12&os=1&seq=&source=0&ts=1572523399&version=2.0&sig=074133c7f08e4b0320aee6584e244e49' -d '{"token":"D46EF700A328F58231FF69045A54C91D","openid":"15879468368890148661"}'
{
"ret": 0,
"msg": "success",
"sopenid": "ikrjDgPqEUPTY_jnBKx9w5NZAkOimlyv-Tzl2Cj0gEFCtDHY_KjzRQBD9CuufGrM",
"seq": "1572525777-0016777343-022540-0000000192"
}
四、分享(仅QQ渠道支持)
4.1 接口名
/v2/friend/share
4.2 接入说明
该接口平台侧已不再接受游戏接入,接入 ARK 后端分享,如有特殊需求请联系手Q游戏中心对接(已接入游戏可继续使用)。
4.3 接口说明
手Q后端分享,可通过 C2C 收到分享的结构化消息 / ARK消息(在绿洲平台申请 sceneid 发送消息,调用 /v2/friend/ark_share )。另外,也可以通过“QQ手游”公众号收到分享消息,但需提前关注该公众号。
分享的内容只有手机 QQ 上才可以看到,PC QQ 上看不到。
收发限制:
1、结构化消息
同一对号码发送接收,互动次数是一天一次。
接收方,每天最多接收 5 条,每周最多接收 20 条。
发送方,每天发给不同用户,最多发送 10 条,每周最多发送 40 条。
2、ark消息
接收方,每天最多接收5条,接收自同一个人最多3条。
发送方,每天最多30条,每周最多100条。
通过"QQ手游"公众号接收的消息,平台侧会延时下发,于每日固定三个时间段(当前是每天12点,20点,22点)通过公众号下发,单用户每天最多收到3条公众号消息。
4.4 请求参数
参数 | 类型 | 描述 |
---|---|---|
openid | string | 【必填】用户唯一标识 |
token | string | 【必填】 用户登录态 |
type | int | 【必填】固定填写 20000 即可 |
fopenid | string | 【同玩好友必填】同玩好友 openid |
sopenid | string | 【邀请未注册好友必填】未注册好友 sopenid(通过 /v2/friend/recall_friends_list 接口获得) |
title | string | 标题 |
desc | string | 摘要 |
link | string | 分享链接使用【暂不支持链接分享】 |
image_url | string | 分享图片 url |
game_tag | string | 【必填】由平台侧分配,需同手Q平台沟通后填写(以下仅列出部分参考值): 1. 通过公众号收到推送消息 “MSG_INVITE”:邀请; “MSG_FRIEND_EXCEED”:超越炫耀; “MSG_HEART_SEND”:送心; “MSG_SHARE_FRIEND_PVP”:PVP对战; 2. 通过C2C推送收到结构化消息 “MSG_RECALL”:召回; “MSG_INVITE_NEW”:邀请; 3. ARK消息 “MSG_RECALL_ARK”:召回; “MSG_INVITE_ARK”:邀请; “MSG_INVITE_FRIEND_ARK”:拉新; |
channel_info | object | 渠道信息 |
extra | string | 其他扩展信息 |
channel_info 字段
参数 | 类型 | 描述 |
---|---|---|
act | int | 拉起游戏:1 |
target_url | string | 游戏中心详情页 URL,自定义信息可在 Url 后添加 gamedata 参数实现透传,例如:https://speed.gamecenter.qq.com/pushgame/v1/detail?appid=xxx&gamedata=gamedata |
src | int | 消息来源,默认值 0 |
dst | int | 只能填 1001 |
flag | int | 漫游,只能填1 |
4.5 请求返回
参数 | 类型 | 描述 |
---|---|---|
ret | int | 返回码 0:正确,其他:失败 |
msg | string | 返回结果详细说明 |
seq | string | 请求 url 中的 seq 字段 |
4.6 请求示例
请求URL
http://hktest.itop.qq.com/v2/friend/share?channelid=2&gameid=11&os=1&seq=123&ts=1530792639&version=&sig=f544c40d50c28f4094aabd2d6638a9a3
请求Body
{ "openid": "4724195171999796436", "token": "27A50B44430AAD6BFFBE09BA875E48BB", "fopenid": "4124157778415485412", "title": "test_share", "desc": "nothing to share", "link": "", "image_url": "http://mat1.gtimg.com/www/images/qq2012/erweimaNewsPic.png", "game_tag": "", "type": 20000, "channel_info": { "target_url": "http://mat1.gtimg.com/www/images/qq2012/erweimaNewsPic.png", "dst": 1001, "src": 0, "flag": 1 } }
响应
{ "ret": 0, "msg": "success!", "seq": "123" }
五、手Q ARK 后端分享(仅QQ渠道支持)
5.1 接口名
/v2/friend/ark_share
5.2 接入说明
手Q ARK分享服务接口提供了ARK消息 C2C 分享能力(分享消息给手机QQ好友,在好友会话框中显示),在绿洲平台申请 sceneid,发送 ARK 类型消息。以下流程均需要联系腾讯对接人:
(1)接入方联系 QQ平台运营 录入信息,QQ平台运营 将信息提交给平台流程组录入;
(2)接口接入完成后验证分享是否成功。
5.3 接口说明
1.分享的内容只有手机QQ上才可看到,PC QQ上看不到。
2.收发限制:
接收方,每天最多接收5条,接收自同一个人最多3条。
发送方,每天最多30条,每周最多100条。
5.4 请求参数
参数 | 类型 | 描述 |
---|---|---|
openid | string | 【必填】 发送分享的用户 id |
token | string | 【必填】 发送分享用户的登录态 token |
fopenid | string | 【同玩好友必填】接收分享的同玩好友的 openid |
sopenid | string | 【邀请未注册好友必填】未注册好友 sopenid(通过 /v2/friend/recall_friends_list 接口获得) |
extra | string | 【必填】透传手Q侧的分享模板 extraJson, 去掉json的注释和空白符,必需进行 urlencode 返回参数 |
说明:
extraJson 在手Q侧申请接入ARK分享流程完成后会拿到该参数 , 使用时需要将json串的注释和空白符去掉,压缩成一个字符串后再进行url encode加密。
5.5 请求返回
参数 | 类型 | 描述 |
---|---|---|
ret | int | 返回码 0:正确,其他:失败 |
msg | string | 返回结果详细说明 |
5.6 请求示例
请求URL
https://itop.qq.com/v2/friend/ark_share?channelid=2&conn=&gameid=12&os=1&seq=1111-001&source=1&ts=1605081818&version=2.0&sig=62993d6c7f03f3e5c24fe5bb7ab06091
请求Body
{ "openid": "6703731585054734300", "token": "17DD31B2CC12B2A078B8CE4A7333B7FA", "fopenid": "14719294144616908484", "extra": "%7B%22app%22%3A%22com.tencent.gamecenter.qqsy%22%2C%22view%22%3A%22picView2%22%2C%22desc%22%3A%22%E6%B8%B8%E6%88%8F%E5%88%86%E4%BA%AB%22%2C%22ver%22%3A%221.0.0.1%22%2C%22config%22%3A%7B%22forward%22%3A0%2C%22type%22%3A%22normal%22%7D%2C%22meta%22%3A%7B%22shareData%22%3A%7B%22appid%22%3A%221109719108%22%2C%22openId%22%3A%22%22%2C%22scene%22%3A%22446%22%2C%22url%22%3A%22%22%7D%7D%7D" }
响应
{ "ret": 0, "msg": "success!", "seq": "1594899989-0268717065-054062-0000016317" }
六、手Q ARK 分享签名生成接口(仅QQ渠道支持)
6.1 接口名
/v2/friend/ark_sign
6.2 接口说明
【注意】业务正式发布前请联系 MSDK助手 评估修改 OIDB 单据频率。
6.3 请求参数
参数 | 类型 | 描述 |
---|---|---|
openid | string | 【必填】 openid(gopenid) |
token | string | 【必填】 token(MSDK token) |
extra | string | 【必填】ark分享json(从绿洲获取模板后插入数据生成) |
6.4 请求返回
参数 | 类型 | 描述 |
---|---|---|
ret | int | 返回码 0:正确,其他:失败 |
msg | string | 返回结果详细说明 |
data | string | 签名后的ark分享json |
6.5 请求示例
请求URL
https://dev.itop.qq.com/v2/friend/ark_sign?channelid=2&conn=&gameid=12&os=1&seq=&source=0&ts=1692601073&version=2.0&sig=fcd4ef7647b1211af5edfe7c9ad26b02
请求Body
{ "openid": "12629992397987394692", "token": "123123", "extra": "{\"app\":\"com.tencent.channel.share\",\"prompt\":\"[分享链接]Loading...\",\"meta\":{\"detail\":{\"origin\":\"分享链接\",\"title\":\"Loading...\",\"desc\":\"Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.\",\"img\":\"https://qq.ugcimg.cn/v1/gpvjqfbrr4fbajrkhade6q8rum44amkp1gt5iaqi4n0r5o6hf4t6inmtuieq9f8hufb3f45k0ibus7htmnr12tih5n14b75954jqvs0/goeub8be9seqoorm568262dnoo\",\"link\":\"https://leetcode.com/problems/word-ladder/\"}},\"config\":{\"ctime\":1629030272,\"autosize\":1,\"forward\":1},\"view\":\"albumAddPic\",\"ver\":\"1.0.0.1\"}" }
响应
{ "ret": 0, "msg": "success!", "data": "{\"app\":\"com.tencent.channel.share\",\"config\":{\"autosize\":1,\"ctime\":1629030272,\"forward\":1,\"token\":\"d610fd3b4247fc8d362473aeb2282491\"},\"meta\":{\"detail\":{\"desc\":\"Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.\",\"img\":\"https://qq.ugcimg.cn/v1/gpvjqfbrr4fbajrkhade6q8rum44amkp1gt5iaqi4n0r5o6hf4t6inmtuieq9f8hufb3f45k0ibus7htmnr12tih5n14b75954jqvs0/goeub8be9seqoorm568262dnoo\",\"link\":\"https://leetcode.com/problems/word-ladder/\",\"origin\":\"分享链接\",\"title\":\"Loading...\"}},\"prompt\":\"[分享链接]Loading...\",\"ver\":\"1.0.0.1\",\"view\":\"albumAddPic\"}\n", "seq": "1692604361-1415414537-022139-0000160877" }
All rights reserved.