跳到主要内容

Android

本文旨在介绍如何设置 DMM 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 DMM 渠道登录。

前提条件

1. 设置 DMM 应用

请联系 DMM 技术支持部门,获取具有相关权限和应用程序参数的开发人员账号。

所需应用程序参数:

  • 应用程序 ID
  • 密匙
  • 用户密钥
  • 消费者密钥
  • 验证客户端 ID
  • 验证客户端密钥
  1. 获取 Player Network 控制台登录账号
  2. 为游戏创建新项目,或加入已有项目
  3. 下载 SDK
  4. 接入 SDK
  5. 在 Player Network 控制台添加 DMM 为业务的登录鉴权方式

步骤1:为 DMM 登录配置 SDK

警告

由于 DMM SDK 仅与 minSdkVersion >=23 或更高版本兼容,因此在 Android 6.0 或更早版本上运行时可能会出现问题。为游戏设置 minSdkVersion >= 23。

  1. 打开项目的 INTLConfig.ini 文件:

    [Android LifeCycle]
    LIFECYCLE=DMM
    [DMM]
    DMM_DEVELOP_MODE = {INTL_DMM_DEVELOP_MODE}
    DMM_APP_ID = {INTL_DMM_APP_ID}
    DMM_CONSUMER_KEY = {INTL_DMM_CONSUMER_KEY}
    DMM_CONSUMER_SECRET = {INTL_DMM_CONSUMER_SECRET}
    DMM_AUTHENTICATION_CLIENT_ID = NONE
    DMM_AUTHENTICATION_CLIENT_SECRET = NONE
    DMM_GET_VALIDATE_CODE_PATH = /v2/auth/get_dmm_verify_code
    DMM_REDIRECT_URL = {INTL_DMM_REDIRECT_URL}
    DMM_SECRET_KEY = NONE
  • 将 DMM 添加到 LIFECYCLE。有关更多信息,请参见 SDK 环境
  • {INTL_DMM_DEVELOP_MODE} 替换为 sandbox 和 production。Sandbox 是调试环境,production 是生产环境。
  • {INTL_DMM_APP_ID} 替换为游戏的 DMM 应用程序 ID。
  • {INTL_DMM_CONSUMER_KEY} 替换为游戏的 DMM 消费者密钥。
  • {INTL_DMM_CONSUMER_SECRET} 替换为游戏的 DMM 消费者密钥。
  • {INTL_DMM_REDIRECT_URL}`值的设置规则如下:
    1. 删除软件包名称中的所有句点。例如,软件包名称 com.INTL.game 变为字符串 comINTLgame
    2. 将上述规则得到的字符串从大写改为小写。例如,在上例中,字符串变为 comintlgame
    3. 然后在最后添加 ://auth,例如,comintlgame://auth
  1. 完成 Gradle 配置。

mainTemplate.gradle 中,添加 DMM_LOGIN_ACTIVITY_DATA_SCHEME

android {
defaultConfig {
manifestPlaceholders = [
"DMM_LOGIN_ACTIVITY_DATA_SCHEME":"{INTL_DMM_LOGIN_ACTIVITY_DATA_SCHEME}"
]
}
}

{INTL_DMM_LOGIN_ACTIVITY_DATA_SCHEME} 值的设置规则如下:

  1. 删除软件包名称中的所有句点。例如,软件包名称 com.INTL.game 变为字符串 comINTLgame
  2. 将上述规则得到的字符串从大写改为小写。例如,在上例中,字符串变为 comintlgame

步骤2:添加 DMM 登录

  1. 注册登录相关回调。

    // Add callbacks
    public void AddAuthObserver()
    {
    INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
    }

    // Remove callbacks
    public void RemoveAuthObserver()
    {
    INTLAPI.RemoveAuthResultObserver(OnAuthResultEvent);
    }

    // Process the INTLAuthResult callback
    public void OnAuthResultEvent(INTLAuthResult ret)
    {
    Debug.Log($"MethodID: {ret.MethodId}");

    string methodTag = "";
    if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_LOGIN)
    {
    methodTag = "Login";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_BIND)
    {
    methodTag = "Bind";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_AUTOLOGIN)
    {
    methodTag = "AutoLogin";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_QUERY_USER_INFO)
    {
    methodTag = "QueryUserInfo";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_GET_AUTH_RESULT)
    {
    methodTag = "GetAuthResult";
    }
    }
  2. 调用 AutoLogin 接口自动登录。

    INTLAPI.AutoLogin();
  3. 在自动登录失败时调用 Login 接口使玩家手动登录。

    INTLAPI.Login(INTLChannel.DMM); 
  4. 与游戏后台同步客户端身份验证状态,等待最终验证结果。

步骤3:验收登录功能

在 Player Network SDK 日志中搜索关键字 "AuthResult" 确认渠道名称和 OpenID 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。

如果接入过程中遇到问题,请参见 常见问题