Skip to main content

iOS

Important

请勿自行接入。TikTok 渠道需与 TikTok 侧建立正式合作后方可注册应用、获取用于接入的配置。如需接入,请先咨询业务接口人。

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

前提条件

1. 在 TikTok 开发者平台上配置应用
1. 注册并登录 TikTok 开发者账号

使用邮箱在 TikTok 开发者平台注册并登录。

2.(可选)创建公司组织 Organization

TikTok 建议创建组织,方便后续多人协作、角色权限管理。

  1. 组织说明
  2. 创建组织入口
3. 创建 TikTok App
  1. 打开 Apps ,点击 Connect an appImage: TikTok - connect an app
  2. 选择 个人开发者公司组织
  3. 输入 App name,点击 Confirm 完成创建。 Image: TikTok - confirm app
4. 配置 App 基本信息
  1. 填写应用基本信息:图标、名称、应用类型、描述信息、服务条款、隐私条款。
  2. Platforms 勾选 iOSImage: TikTok - choose ios platform
  3. Configure for iOS 填入 iOS 包相关信息(找开发同学提供)。 Image: TikTok - configure for ios platform
5 服务条款 & 隐私政策 URL 域名认证

TikTok 要求对你填写的 ToS/隐私政策 URL 的域名进行认证,通过后才可以保存并提交审核。

  1. 点击 Verify URL propertiesImage: TikTok - verify url properties
  2. 在弹窗中点击 Verify propertiesImage: TikTok - verify properties
  3. 选择 URL prefix,输入域名 URL,点击 VerifyImage: TikTok - url prefix
  4. 下载 TikTok 生成的签名文件(例如:tiktokxxxx.txt)。 Image: TikTok - signature file
  5. 联系运维/网站同学将该文件上传到对应域名的服务器,使其可通过浏览器直接访问下载。
  6. 上传完成后回到 TikTok 页面点击 Verify 完成最终认证。
    Image: TikTok - verify
    • 若失败:请检查签名文件是否可在浏览器正常下载(路径/权限/CDN 缓存等)。
6. App 审核信息
  1. 详细描述游戏如何使用TikTok Login Kit登录功能。
  2. 录制一个游戏使用TikTok授权登录的完整视频,由于当前并未完成TikTok接入,可以先临时上传任意视频,后续提交审核时重新提供视频即可。 Image: TikTok - review app
7. 配置 Products:启用 Login Kit
  1. 进入 Products,点击 Add productsImage: TikTok - add products
  2. 点击 + Add,添加 Login KitImage: TikTok - login kit
  3. 为 Login Kit 配置:
    • iOS Universal Link(找开发同学提供) Image: TikTok - iOS app link
  4. 将链接替换为游戏的 Deep Link,但请保留回调路径后缀:
    .../pnt/tiktok/logincallback
8. Scopes 配置
  • 添加 Login Kit 后,TikTok 会自动添加 user.info.basic 权限。
  • 目前一般不需要额外添加其它 Scopes(除非业务明确需要)。
9. 保存 App 配置
  1. 点击右上角 Save 保存配置。
  2. 由于尚未完成接入与联调,请暂时不要点击 “Submit for review”
  3. 若保存失败,请根据页面错误提示补齐必填项(以上步骤基本均为必需项)。 Image: TikTok - submit for review
10.(推荐)创建 Sandbox 并添加测试用户

提交审核前的开发联调建议在 Sandbox 环境进行。

  1. 在页面左上角切换到 Sandbox,点击 Create SandboxImage: TikTok - create sandbox name Image: TikTok - open sandbox
  2. 输入 Sandbox 名称,并勾选 Clone from Production or an existing Sandbox,点击 ConfirmImage: TikTok - create sandbox
  3. 在 Sandbox 中点击 Add account 添加测试 TikTok 账号: Image: TikTok - add tiktok account sandbox
    • 登录成功后,该账号会进入 Target Users 列表
    • 只有 Target Users 内的账号才能进行 TikTok 登录测试 Image: TikTok - sandbox login Image: TikTok - sandbox target users
  1. 获取 Player Network 控制台登录账号
  2. 为游戏创建新项目,或加入已有项目
  3. 下载 SDK
  4. 接入 SDK
  5. 在 Player Network 控制台添加 TikTok 为业务的登录鉴权方式

步骤1:为 TikTok 登录配置 SDK

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

    INTLConfig.ini
    [INTL environment]
    # WARNING: You should change this URL to the production environment when you release your game.
    INTL_URL = https://test.intlgame.com
    GAME_ID = {INTL_GAME_ID}
    SDK_KEY = {INTL_SDK_KEY}
    [INTL Log]
    LOG_LEVEL = 1
    LOG_CONSOLE_OUTPUT_ENABLE = 1
    LOG_FILE_OUTPUT_ENABLE = 1
    LOG_ENCRYPT_ENABLE = 0
    LOG_COMPRESS_ENABLE = 0
    [TikTok]
    TIKTOK_APP_ID = {INTL_TIKTOK_APP_ID}
    TIKTOK_CLIENT_KEY = {INTL_TIKTOK_CLIENT_KEY}
    TIKTOK_REDIRECT_URI = {INTL_TIKTOK_REDIRECT_URI}
    TIKTOK_REWARD_BIND_URI = {INTL_TIKTOK_REWARD_BIND_URI}
    TIKTOK_SCOPE = user.info.profile
    • 将 SDK 后端环境 INTL_URL 设置为 https://test.intlgame.com
    • {INTL_GAME_ID}{INTL_SDK_KEY} 替换为 Player Network 控制台 分配的 GAME_IDSDK_KEY 的值。
    • 设置 LOG_LEVEL = 1LOG_CONSOLE_OUTPUT_ENABLE = 1LOG_FILE_OUTPUT_ENABLE = 1LOG_ENCRYPT_ENABLE = 0LOG_COMPRESS_ENABLE = 0,以便在不加密或压缩输出的情况下输出控制台日志和日志文件。
    • {INTL_TIKTOK_APP_ID} 替换为 TikTok 分配的 App ID。
    • {INTL_TIKTOK_CLIENT_KEY} 替换为 TikTok 分配的 Client Key,用于标识游戏在 TikTok 登录流程中的应用身份。
    • {INTL_TIKTOK_REDIRECT_URI} 替换为 TikTok 授权完成后回调到游戏的 Redirect URI。回调路径必须以 /pnt/tiktok/logincallback 结尾。
    • {INTL_TIKTOK_REWARD_BIND_URI} 替换为 TikTok 发奖绑定流程使用的 Reward Bind URI。回调路径必须以 /pnt/tiktok/rewardsbind 结尾。如未使用发奖绑定功能,可留空。
    • 移动端 SDK 会自动添加默认 scope user.info.basicvideo.listgame.entitlement.managementTIKTOK_SCOPE 仅用于配置业务额外需要的权限,例如 user.info.profile
  2. 在项目的 Info.plist 中添加 TikTok 相关配置:

    Info.plist
    <key>TikTokClientKey</key>
    <string>{INTL_TIKTOK_CLIENT_KEY}</string>
    <key>TTGPAppID</key>
    <string>{INTL_TIKTOK_APP_ID}</string>

    <key>LSApplicationQueriesSchemes</key>
    <array>
    <string>tiktokopensdk</string>
    <string>tiktoksharesdk</string>
    <string>snssdk1233</string>
    <string>snssdk1180</string>
    </array>

    <key>CFBundleURLTypes</key>
    <array>
    <dict>
    <key>CFBundleURLName</key>
    <string>TikTok</string>
    <key>CFBundleURLSchemes</key>
    <array>
    <string>m{INTL_TIKTOK_CLIENT_KEY}</string>
    </array>
    </dict>
    </array>
    • {INTL_TIKTOK_CLIENT_KEY}{INTL_TIKTOK_APP_ID} 替换为 TikTok 提供的值。
    • LSApplicationQueriesSchemes 用于检测 TikTok 应用是否安装并在需要时拉起应用。TTGP SDK 会检查 snssdk1233snssdk1180tiktokopensdktiktoksharesdk 用于兼容 TikTok Open SDK 的回退流程。
    • CFBundleURLTypes必需的。TikTok 的 URL Scheme 必须严格配置为 m<CLIENT_KEY>,即字母 m 加上你的 TikTok Client Key。m 前缀是必需的:iOS App Store 审核(错误码 ITMS-90158)会拒绝完全由数字组成的 URL Scheme,且 TikTok SDK 会将此 Scheme 作为回退回调路径。
  3. 配置 Universal Link 回调,使 TikTok 能够通过 HTTPS 将授权结果返回给游戏。由于 TIKTOK_REDIRECT_URI 是一个 HTTPS 链接,iOS 会通过 Universal Link 路由回调:

    • 在应用的 Associated Domains 能力中添加回调域名:

      YourApp.entitlements
      <key>com.apple.developer.associated-domains</key>
      <array>
      <string>applinks:{INTL_TIKTOK_REDIRECT_URI_HOST}</string>
      </array>

      {INTL_TIKTOK_REDIRECT_URI_HOST} 替换为 TIKTOK_REDIRECT_URI 的主机名。例如 TIKTOK_REDIRECT_URI = https://example.com/pnt/tiktok/logincallback,则填写 example.com

    • 在该域名下托管 apple-app-site-association 文件,使 iOS 能够将回调路由到您的应用。文件中必须在 applinks 部分包含应用的 Team ID 与 Bundle ID。

    • 在 TikTok 开发者控制台,将 iOS Universal Link 设置为与 TIKTOK_REDIRECT_URI 完全一致、以 /pnt/tiktok/logincallback 结尾的链接。

步骤2:添加 TikTok 登录

Player Network 会在拉起应用登录之前检查应用程序登录状态。

  • 如果安装了 TikTok 应用程序,Player Network 会打开 TikTok 应用程序进行登录。
  • 如果未安装 TikTok 应用程序,Player Network 登录页面将不会展示 TikTok 渠道登录入口。
  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 AuthResult)
    {
    Debug.Log($"MethodID: {AuthResult.MethodId}");

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

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

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

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