11/25/2024 10:18:49
Email & Phone 渠道说明
MSDKCore V5.8 及以下的邮箱和手机渠道已废弃,自建账号能力仅在 MSDKCore V5.9 版本以上支持,如需要邮箱和手机登录功能,请使用 MSDKCore V5.9 及以上版本。一、产品介绍
邮箱&手机模块是MSDK自建账号能力,当前邮箱&手机合并为一个渠道,接入后支持使用邮箱/手机号注册并登陆游戏,并提供配套的重置密码、修改邮箱/手机号、添加邮箱/手机号等能力,同时也支持与其他社交渠道相互绑定。
功能介绍:
- 注册:支持使用邮箱/手机号注册,注册时生成验证码并发送到注册的邮箱/手机上,用户输入验证码并设置登录密码后完成注册;
- 登录:支持使用注册过的邮箱/手机号进行登录,提供2种登录方式:账号+密码登录、账号+验证码登录;
- 重置密码:支持修改邮箱/手机的登录密码;
- 添加邮箱/手机号:支持在已有的邮箱账号下添加未注册过的手机号、或在已有的手机账号下添加未注册过的邮箱,添加后可支持使用邮箱/手机任一方式登录,密码共用一套;
- 渠道互绑:邮箱&手机作为一个独立渠道,支持与其他社交渠道(Facebook、twitter等)相互绑定,绑定后可支持用户选择任一渠道登录同一个账号。
二、接入流程
2.1 申请接入
需要联系 MSDK助手 邮件申请。
2.2 配置信息
MSDK回复邮件分配应用ID、应用密钥,业务在飞鹰管理端进行联调环境的登录渠道配置。
进入飞鹰系统,选择游戏管理-全部游戏,找到自己的游戏,进入游戏详情页-登录信息,联调环境勾选Email&Phone渠道,填入应用ID、应用密钥,点击发布至联调环境即可:
2.3 申请发送主体、邮箱/短信模板
根据上一步的邮件附件《邮箱和手机接入配置指引》,到腾讯云(短信)申请发送主体及对应模板,并于计划联调时间前1周回复邮件提供发送主体账号和模板信息,注意提供的时间需要早于联调时间,否则会影响联调!
2.4 接入联调:相关功能接口联调
2.5 上线前准备:业务配置检查
- 业务侧限制规则对齐:包含短信、邮件发送间隔、密码错误次数限制、token有效期、验证码有效期等。
填写正式环境登录渠道配置、容量预估信息:
进入飞鹰系统,选择游戏管理-全部游戏,找到自己的游戏,进入游戏详情页-登录信息,正式环境选择发行区域、勾选Email&Phone渠道,填入应用ID、应用密钥(与联调环境一致)
填写容量预估,点击发布正式环境,进入审核流程,审核通过后正式生效
2.6 发布上线
三、工程配置
Android: 在工程中找到 assets/MSDKConfig.ini 文件
iOS: 在工程中找到 MSDKAppSetting.bundle/MSDKConfig.ini 文件
MSDK_URL = https://hktest.itop.qq.com
[MSKD 自建账号配置]
# 游戏在上线时需要将 MSDK_ACCOUNT_URL 环境切换为正式服,此处环境需要与MSDK_URL对应,即同为联调服或正式服
MSDK_ACCOUNT_URL = https://cotest.msdkpass.com
MSDK_ACCOUNT_SDK_KEY = {MSDK_ACCOUNT_SDK_KEY}
MSDK_ACCOUNT_APP_ID = {MSDK_ACCOUNT_APP_ID}
# 开启 MSDK 默认密码校验规则,默认开启,假如有自己的校验需求,请将其置零,在调用接口前自己先做密码校验
MSDK_ACCOUNT_PASSWORD_VALIDATION = 1
[info] MSDK_ACCOUNT_URL 可选如下URL值:
需要将 {MSDK_ACCOUNT_SDK_KEY} 替换为业务自己的 Account 模块的 SDK KEY
需要将 {MSDK_ACCOUNT_APP_ID} 替换为业务自己的 Account 模块的 APP ID
四、接口说明
最佳实践:对于手机区号 areaCode 字段,业务在做 UI 页面设计的时候,建议让用户做选择,而不是手动输入,这样能避免用户误输的情况。4.1 回调
Login登录相关的回调:
Login登录的回调可以参考 MSDKLogin 登录模块 的注册回调部分
Account接口的回调:
public static event OnMSDKRetEventHandler<MSDKAccountRet> AccountEvent;
public void OnAccountEvent(MSDKAccountRet accountRet)
{
Debug.Log("OnAccountNotify in Login");
string methodTag = "";
if (accountRet.MethodNameId == (int)MSDKMethodNameID.MSDK_ACCOUNT_VERIFY_CODE)
{
methodTag = "SendVerifyCode";
}
else if (accountRet.MethodNameId == (int)MSDKMethodNameID.MSDK_ACCOUNT_RESET_PASSWORD)
{
methodTag = "ResetPassword";
}
else if (accountRet.MethodNameId == (int) MSDKMethodNameID.MSDK_ACCOUNT_MODIFY)
{
methodTag = "Modify";
}
else if (accountRet.MethodNameId == (int) MSDKMethodNameID.MSDK_ACCOUNT_REGISTER_STATUS)
{
methodTag = "GetRegisterStatus";
}
mCurrentTestMgr.ShowLogInNewLine(methodTag + Tools.Instance.GetRetString(accountRet));
}
MSDKAccount.AccountEvent += mAccountCallBack.OnAccountEvent;
class MyAccountObserver : public MSDKAccountObserver {
public:
void OnAccountNotify(const MSDKAccountRet &accountRet) {
// 处理 accountRet 回调信息
}
}
MSDKAccount::SetAccountObserver(new MyAccountObserver());
4.2 注册登录
接口:
MSDKLogin.Login(string channel,
string permissions = "",
string subChannel = "",
string extraJson = "")
void MSDKLogin::Login(const String &channel,
const String &permissions,
const String &subChannel,
const String &extraJson)
描述:
要使用自建账号的邮箱或手机号注册登录功能,可以通过调用 MSDKLogin.Login 接口,向 extraJson 中以 json 格式传入参数,具体参数说明如下:
channel - 【必填】渠道名称,"Self" 为自建账号渠道
permissions - 权限,此处填空 ""
subChannel - 子渠道,此处填空 ""
extraJson - 扩展字段,注册登录功能参数示例如下:
{
"type": "register", // 类型 - 使用注册功能
"account": "150xxxxxx87", // 账号
"password": "123456678", // 密码
"verifyCode": 12323, // 验证码
"extraJson": "", // 注册时使用的扩展字段,此处为空
"accountType": 2, // 账号类型,1-邮箱,2-手机号
"langType": "zh_CN", // 语言类型,指定发送消息的语言
"areaCode": "86" // 区号,如果输入的手机号,区号为必填,若输入的是邮箱,则区号可不填
// 对于手机区号 areaCode 字段,业务在做 UI 页面设计的时候,建议让用户做选择,而不是手动输入
}
4.3 账密登录
不建议使用密码形式登录,优先用验证码。接口:
MSDKLogin.Login(string channel,
string permissions = "",
string subChannel = "",
string extraJson = "")
void MSDKLogin::Login(const String &channel,
const String &permissions,
const String &subChannel,
const String &extraJson)
描述:
要使用邮箱或手机号账密登录功能,可以通过调用 MSDKLogin.Login 接口,向 extraJson 中以 json 格式传入参数,具体参数说明如下:
channel - 【必填】渠道名称,"Self" 为自建账号渠道
permissions - 权限,此处填空 ""
subChannel - 子渠道,此处填空 ""
extraJson - 扩展字段,注册登录功能参数示例如下:
{
"type": "login", // 类型 - 使用账密登录功能
"account": "150xxxxxx87", // 账号
"password": "msdk2020", // 密码
"accountType": 2, // 账号类型,1-邮箱,2-手机号
"langType": "zh_CN", // 语言类型,用于指定发送消息的语言
"areaCode":"852" // 手机区号,账号为手机类型时必填
// 对于手机区号 areaCode 字段,业务在做 UI 页面设计的时候,建议让用户做选择,而不是手动输入
}
4.4 验证码登录
接口:
MSDKLogin.Login(string channel,
string permissions = "",
string subChannel = "",
string extraJson = "")
void MSDKLogin::Login(const String &channel,
const String &permissions,
const String &subChannel,
const String &extraJson)
描述:
要使用邮箱或手机号验证码登录功能,需要先通过发送验证码接口获取验证码,再通过调用 MSDKLogin.Login 接口,向 extraJson 中以 json 格式传入参数,具体参数说明如下:
channel - 【必填】渠道名称,"Self" 为自建账号渠道
permissions - 权限,此处填空 ""
subChannel - 子渠道,此处填空 ""
extraJson - 扩展字段,验证码登录功能参数示例如下:
{
"type": "loginWithCode", // 类型 - 使用账密登录功能
"account": "150xxxxxx87", // 账号
"verifyCode": 25496, // 验证码
"accountType": 2, // 账号类型,1-邮箱,2-手机号
"langType": "zh_CN", // 语言类型,用于指定发送消息的语言
"areaCode":"852" // 手机区号,账号为手机类型时必填
// 对于手机区号 areaCode 字段,业务在做 UI 页面设计的时候,建议让用户做选择,而不是手动输入
}
4.5 发送验证码
接口:
MSDKAccount.RequestVerifyCode(string channel,
string account,
int codeType,
int accountType,
string langType,
string areaCode = "86",
string extraJson = "")
MSDKAccount::RequestVerifyCode(const String& channel,
const String& account,
int codeType,
int accountType,
const String& langType,
const String& areaCode = "86",
const String& extraJson = "");
描述:
要使用向邮箱或手机号发送验证码的功能,需要调用此接口,传入指定参数,例如要获取验证码用于登录,那么 codeType 需要传入 2,具体参数说明如下:
/**
* 发送校验码接口
* @param channel 【必填】渠道名称,"Self" 为自建账号渠道
* @param account 【必填】注册的账号
* @param codeType 【必填】生成的验证码类型,0-注册,1-修改密码,2-验证码登录,3-修改账号信息
* @param accountType 【必填】账号类型,1-邮箱,2-手机号
* @param areaCode 【选填】手机区号,账号为手机类型时必填,邮箱渠道可直接填"",对于手机区号 areaCode 字段,业务在做 UI 页面设计的时候,建议让用户做选择,而不是手动输入
* @param langType 【必填】指定发送给用户的验证码短信或邮件所用语言
* @param extraJson 【选填】扩展字段,默认为空,会透传到后台
*/
4.6 修改密码
接口:
MSDKAccount.ResetPassword(string channel,
int verifyType,
string account,
string password,
string oldPassword,
int accountType,
int verifyCode,
string langType,
string areaCode = "86",
string extraJson = "");
MSDKAccount::ResetPassword(const String& channel,
int verifyType,
const String& account,
const String& password,
const String& oldPassword,
int accountType,
int verifyCode,
const String& langType,
const String& areaCode,
const String& extraJson);
描述:
- 支持通过验证码形式修改密码,verifyType 传 1
要使用修改密码功能,需要调用此接口,传入指定参数,调用前需要先通过发送验证码接口获取修改密码的验证码,具体参数详情如下:
/**
* 修改密码接口
* @param channel 【必填】"Self"-自建账号
* @param verifyType 【必填】验证方式,1:使用验证码
* @param account 【必填】注册的账号
* @param password 【必填】登录密码
* @param accountType 【必填】支持"1- Email","2 - SMS"
* @param verifyCode 【选填】验证码
* @param areaCode 【选填】手机渠道时为国际区号,邮箱渠道可直接填"",对于手机区号 areaCode 字段,业务在做 UI 页面设计的时候,建议让用户做选择,而不是手动输入
* @param extraJson 【选填】扩展字段,默认为空,会透传到后台
*/
4.7 查询用户注册状态
接口:
MSDKAccount.GetRegisterStatus(string channel,
string account,
int accountType,
string langType,
string areaCode,
string extraJson)
MSDKAccount::GetRegisterStatus(const String &channel,
const String &account,
int accountType,
const String &langType,
const String &areaCode,
const String &extraJson)
描述:
要使用查询用户注册状态功能,需要传入如下参数:
/**
* 用户账号是否注册查询接口
* @param channel 【必填】渠道名称,"Self" 为自建账号渠道
* @param account 【必填】注册的账号
* @param accountType 【必填】账号类型,1-邮箱,2-手机号
* @param langType 【必填】指定发送给用户的验证码短信或邮件所有语言
* @param areaCode 【选填】手机区号,账号为手机类型时必填,邮箱渠道可直接填"",对于手机区号 areaCode 字段,业务在做 UI 页面设计的时候,建议让用户做选择,而不是手动输入
* @param extraJson 【选填】扩展字段,默认为空,会透传到后台
*/
在返回的回调中可获取如下值:
isRegister // 表明该账号是否已注册,1 - 已注册, 0 - 未注册
isSetPassword // 表明该账号是否已设置密码,1 - 已设置,0 - 未设置
4.8 修改账号信息
接口:
MSDKAccount.Modify(string channel,
int verifyType,
string account,
int accountType,
int verifyCode,
int verifyCodeModify,
string password,
string accountModify,
int accountTypeModify,
string areaCodeModify,
string langType,
string areaCode,
string extraJson);
MSDKAccount::Modify(const String &channel,
int verifyType,
const String &account,
int accountType,
int verifyCode,
int verifyCodeModify,
const String &password,
const String &accountModify,
int accountTypeModify,
const String &areaCodeModify,
const String &langType,
const String &areaCode,
const String &extraJson);
描述:
- 支持通过验证码形式修改账号信息,verifyType 传 1
调用此接口使用修改账号信息的功能,需要传入如下参数:
/**
* 修改账号信息接口
* @param channel 【必填】支持"Passport"-统一账号,"EGame"-企鹅电竞, "Self"-自建账号三个渠道
* @param verifyType 【必填】验证方式,1:使用验证码
* @param account 【必填】注册的账号
* @param accountType 【必填】支持"1- Email","2 - SMS"
* @param verifyCode 【必填】验证码, 修改账号验证码(code_type=3)
* @param verifyCodeModify 【必填】被修改账号的验证码,修改账号验证码(code_type=3)
* @param accountModify 【必填】要修改的账号
* @param accountTypeModify 【必填】要修改的账号类似1email,2phone
* @param areaCodeModify 【选填】 要修改的账号是手机时为必填参数, 这里填写的是手机区号字段,对于手机区号 areaCode 字段,业务在做 UI 页面设计的时候,建议让用户做选择,而不是手动输入
* @param areaCode 【选填】 手机登录时为必填参数, 这里填写的是手机区号字段,对于手机区号 areaCode 字段,业务在做 UI 页面设计的时候,建议让用户做选择,而不是手动输入
* @param extraJson 【选填】扩展字段,默认为空,会透传到后台
*/
4.9 查询验证码有效期
接口:
MSDKAccount.GetVerifyCodeStatus(string channel,
string account,
int accountType,
int verifyCode,
int codeType,
string langType,
string areaCode,
string extraJson)
MSDKAccount::GetVerifyCodeStatus(const String& channel,
const String& account,
int accountType,
int verifyCode,
int codeType,
const String& langType,
const String& areaCode,
const String& extraJson)
描述:调用此接口来查询验证码的有效期,需要传入如下参数:
/**
* 验证码有效期查询接口
* @param channel 【必填】渠道名称,"Self" 为自建账号渠道
* @param account 【必填】注册的账号
* @param accountType 【必填】账号类型,1-邮箱,2-手机号
* @param verifyCode 【必填】验证码
* @param codeType 【必填】生成的验证码类型,0注册,1修改密码,2登录并注册,3修改主体注册账号
* @param langType 【必填】指定发送给用户的验证码短信或邮件所有语言
* @param areaCode 【选填】手机登录时为必填参数, 这里填写的是手机区号字段,对于手机区号 areaCode 字段,业务在做 UI 页面设计的时候,建议让用户做选择,而不是手动输入
* @param extraJson 【选填】扩展字段,默认为空,会透传到后台
*/
在返回的回调中可获取如下值:
verifyCodeExpireTime // 表明该验证码的有效期,单位为 s(秒)
五、语言 langType 列表
语言标识(langType) | 国家地区 | 语言标识(langType) | 国家地区 |
---|---|---|---|
zh_CN | 简体中文(中国) | nl_BE | 荷兰语(比利时) |
zh_TW | 繁体中文(台湾地区) | pt_PT | 葡萄牙语(葡萄牙) |
zh_HK | 繁体中文(香港) | pt_BR | 葡萄牙语(巴西) |
en_HK | 英语(香港) | fr_FR | 法语(法国) |
en_US | 英语(美国) | fr_LU | 法语(卢森堡) |
en_GB | 英语(英国) | fr_CH | 法语(瑞士) |
en_WW | 英语(全球) | fr_BE | 法语(比利时) |
en_CA | 英语(加拿大) | fr_CA | 法语(加拿大) |
en_AU | 英语(澳大利亚) | es_LA | 西班牙语(拉丁美洲) |
en_IE | 英语(爱尔兰) | es_ES | 西班牙语(西班牙) |
en_FI | 英语(芬兰) | es_AR | 西班牙语(阿根廷) |
fi_FI | 芬兰语(芬兰) | es_US | 西班牙语(美国) |
en_DK | 英语(丹麦) | es_MX | 西班牙语(墨西哥) |
da_DK | 丹麦语(丹麦) | es_CO | 西班牙语(哥伦比亚) |
en_IL | 英语(以色列) | es_PR | 西班牙语(波多黎各) |
he_IL | 希伯来语(以色列) | de_DE | 德语(德国) |
en_ZA | 英语(南非) | de_AT | 德语(奥地利) |
en_IN | 英语(印度) | de_CH | 德语(瑞士) |
en_NO | 英语(挪威) | ru_RU | 俄语(俄罗斯) |
en_SG | 英语(新加坡) | it_IT | 意大利语(意大利) |
en_NZ | 英语(新西兰) | el_GR | 希腊语(希腊) |
en_ID | 英语(印度尼西亚) | no_NO | 挪威语(挪威) |
en_PH | 英语(菲律宾) | hu_HU | 匈牙利语(匈牙利) |
en_TH | 英语(泰国) | tr_TR | 土耳其语(土耳其) |
en_MY | 英语(马来西亚) | cs_CZ | 捷克语(捷克共和国) |
en_XA | 英语(阿拉伯) | sl_SL | 斯洛文尼亚语 |
ko_KR | 韩文(韩国) | pl_PL | 波兰语(波兰) |
ja_JP | 日语(日本) | sv_SE | 瑞典语(瑞典) |
nl_NL | 荷兰语(荷兰) | es_CL | 西班牙语(智利) |
六、常见问题
1、Q:手机号登录时,输入验证码后提示“incorrect code”
A:检查发送验证码时选择的区号和登录时选择的是否一致,如果不一致,相当于登录的是另一个账号,验证码无法匹配
All rights reserved.