Skip to main content

iOS

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

Important

从 2024 年春季开始,对于需更新或上传至 Apple App Store Connect 的应用,开发者需明确 注明使用原因,以展示该应用如何使用 required reason API(需提交使用原因的 API)。更多信息,请参见 即将发布的第三方 SDK 要求

由于 X 的隐私清单尚未公布,目前 Player Network SDK 隐私清单中不包含对应的内容,详见 iOS 17 隐私清单

note

由于 Player Network SDK 仅支持 X 网页登录,因此 INTLTwitter 插件依赖 WebView 组件中的 INTLWKWebViewJavascriptBridge 来获取 X 登录网页返回的登录信息。

前提条件

1. 在 X 开发者网站上设置游戏

1. 创建 X 应用

tip

建议使用腾讯邮箱注册账号,这样可以提高后期申请的成功率。

根据提示在 X 开发者网站 上注册团队开发者账号或个人开发者账号。有了开发者账号,您就可以在 Developer Portal 上创建应用程序。

  1. 创建一个新项目。

    图片:Create X project

  2. 选择一个用例。点击 Next

    图片:X project use case

  3. 输入项目描述。点击 Next

    图片:X project description

  4. 选择应用环境。点击 Save

    图片:X application environment

  5. 输入应用程序名称。点击 Save

    图片:X app name

  6. 创建应用程序后,获取 API key and API secret key。存储此信息。点击 App Settings

    Important

    此页面不会再次显示,请务必保存好此信息。

    图片:X API key and API secret key

  7. 点击 Set up

    图片:X setup

  8. 启用 OAuth2.0 和 OAuth1.0a。在应用程序类型中选择 Web App

    图片:X OAuth

  9. 在应用程序权限中选择 Read And Write

    图片:X app permissions

  10. 为回调 URL 输入测试环境和生产环境 URL。您将进入游戏的官方网站。点击 Save

caution

如果游戏已经上线,则不能删除现有的回调 URL,只能添加。

适用于 Player Network SDK V1.15 及更早版本

https://image.intlgame.com/v2/test/jssdk/twitterlogincallback.html
https://image.intlgame.com/v2/release/jssdk/twitterlogincallback.html

适用于 Player Network SDK V1.16 及更高版本

https://test-common-web.intlgame.com/jssdk/twitterlogincallback.html
https://common-web.intlgame.com/jssdk/twitterlogincallback.html

TWITTER_CONSUMER_USE_SDK 为1时,要使用 INTLConfig.ini 中的 X SDK 登录,请添加以下回调 URL:

twittersdk://
twitterkit-{API Key}://

{API Key} 需要替换为游戏的 API Key,不包括大括号

图片:X callback URLs

2. 检索应用程序信息

您需要 X App ID 和密码才能在 Player Network 添加 X 登录渠道。

图片:X app information

  1. 进入 Player Network 控制台, 为游戏创建新项目,或加入已有项目
  2. 下载 SDK
  3. 接入 SDK
  4. 在 Player Network 控制台添加 X 为业务的登录鉴权方式

步骤1:为 X 登录配置 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
    [X]
    TWITTER_CONSUMER_KEY = {INTL_TWITTER_CONSUMER_KEY}
    TWITTER_CONSUMER_SECRET = {INTL_TWITTER_CONSUMER_SECRET}
    • 将 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_TWITTER_CONSUMER_KEY}{INTL_TWITTER_CONSUMER_SECRET} 替换为 X API key 和 API Key Secret。
  2. 将 X 添加到 Info.plist 文件中。

    从 Unity 导出 Xcode 项目之前,请检查 INTLTwitterKit.projmods 中的预定义值,并将 {INTL_TWITTER_CONSUMER_KEY} 替换为 X API 密钥。

    {
    "group": "INTL",
    "Info.plist":{
    "LSApplicationQueriesSchemes":
    [
    "twitter",
    "twitterauth",
    ],
    "CFBundleURLTypes" :
    [
    {
    "CFBundleTypeRole":"Editor",
    "CFBundleURLSchemes":["twitterkit-{INTL_TWITTER_CONSUMER_KEY}"]
    }
    ]
    }
    }

    替换 {INTL_TWITTER_CONSUMER_KEY} 为 X API key。

    如果需要调用 X 好友,在 INTLTwitter 的 iOS 插件中,找到 Xcode 项目的 BuildPhrases 配置,添加或修改以下配置:

    MapKit.framework
    Accounts.framework
    CoreData.framework

步骤2:添加 X 登录

用户登录后,选择 X 渠道来进行绑定。如果用户使用了已经绑定的 X 账号,会提示 server error。再次调用 Bind 接口会需要用户再次登录 X。

  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.Twitter); 
  4. 与游戏后台同步客户端身份验证状态,等待最终验证结果。

[可选] 设置 email 权限

要在 X 登录时获取玩家邮箱需先设置对应权限,开启后将在 AuthResultChannelInfo 中返回 email

  • 基于合规考虑,可针对特定来源对返回的 email 做 mask 处理,如有需求请联系 Player Network 助手打开。
  • 可在后台流水日志中上报 hash 后的 base64(sha256(email)),如有需求请联系 Player Network 助手打开。
  • 可用于验证玩家信息或绑定列表是否包含 email 信息,如有需求请联系 Player Network 助手打开。
  • 可用于 iOS Firebase 的 Private Set Membership(PSM)功能,详见 Firebase iOS 工程配置
  1. X Developer PlatformUser authentication settings 下,勾选 Request email from users

    图片:OAUTH1.OA SETTINGS
  2. Player Network 控制台 开启 email 返回功能,将 return_email 设置为 YES,详细步骤请参见 第三方渠道配置

步骤3:验收登录功能

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

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