跳到主要内容

iOS

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

前提条件

1. 在微信开放平台上设置您的游戏
1. 创建微信应用

微信开放平台 上注册账号,并根据提示在 管理中心 创建手机应用。

图片:Open Platform of WeChat (1)

2. 获取应用程序信息
  1. 登录 微信开放平台

  2. 在顶部导航栏,点击 管理中心

  3. 移动应用 选项卡中,点击相应应用的 操作 栏中的 查看

    图片:Open Platform of WeChat (2)

  4. 在应用程序详细信息页面,检查 AppID 和 AppSecret。

    图片:Open Platform of WeChat (3)

3. 申请业务权限以获得 AppName

配置单个 WeChat 渠道时,AppName 为选填信息。如果计划添加多个 WeChat 渠道,AppName 为必填,需完成以下申请流程获得 AppName

注意

申请需要腾讯内部权限,如您的团队中没有腾讯内部同学可联系 Player Network 接口人协助申请。

  1. 登录 微信开放平台内部接口管理系统

  2. 参照 申请指引 填写申请表,确保信息准确无误。 图片:Open Platform of WeChat (4)

  3. 提交申请并耐心等待审核通过。

  4. 审核通过后,请将申请表中的 业务名称 准确无误地填写到 Player Network 控制台的 AppName 字段中,以完成配置。

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

步骤1:为微信登录配置 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
    [WeChat Channel]
    WECHAT_APP_ID = {INTL_WECHAT_APP_ID}
    WECHAT_UNIVERSAL_LINK_IOS = {WECHAT_UNIVERSAL_LINK_IOS}
    • 将 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_WECHAT_APP_ID} 替换为微信分配的 AppID。
    • {WECHAT_UNIVERSAL_LINK_IOS} 替换为微信开放平台上设置的 UNIVERSAL_LINK
  2. 将 WeChat 添加到 Info.plist 文件中。

    注意

    从 Unity 导出 Xcode 项目之前,请检查 INTLCoreKit.projmods 中的预定义值,并将 {INTL_WECHAT_APP_ID} 替换为微信 AppID。

    {
    "group": "INTL",
    "libs": [

    ],
    "frameworks": [

    ],
    "files": [
    ],
    "folders": [],
    "excludes": [
    "^.*.meta$",
    "^.*.mdown$",
    "^.*.pdf$"
    ],
    "headerpaths":[],
    "build_settings":
    {
    "OTHER_LDFLAGS": ["-ObjC"],
    "ENABLE_BITCODE": "FALSE",
    },
    "system_capabilities": {
    },
    "Info.plist":{
    "LSApplicationQueriesSchemes":
    [
    "weixin",
    "weixinULAPI"
    ],
    "NSAppTransportSecurity":
    {
    "NSAllowsArbitraryLoads":true
    },
    "CFBundleURLTypes" :
    [
    {
    "CFBundleTypeRole":"Editor",
    "CFBundleURLName":"wechat",
    "CFBundleURLSchemes":["{INTL_WECHAT_APP_ID}"]
    }
    ],
    }
    }

    替换 {INTL_WECHAT_APP_ID} 为业务申请的 WeChat App ID。

步骤2:添加微信登录

在调用 INTLAPI.Login 的时候传入权限。微信 iOS/Android 已知的权限列表如下(官方文档没有明确的权限说明):

权限说明
snsapi_userinfo获取用户信息 (Player Network SDK 的默认权限)
snsapi_friend获取好友列表
snsapi_message发送消息
  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.WeChat, "", "");
  4. 与游戏后台同步客户端身份验证状态,等待最终验证结果。

步骤3:验收登录功能

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

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