跳到主要内容

iOS

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

前提条件

1. 在 LINE Developers Console 上设置 LINE 应用

1. 创建 LINE 应用并配置渠道

在为所需平台配置应用程序之前,请登录 LINE Developers Console 并创建开发者账号。使用开发者账号,使用 LINE Developers Console 并创建一个渠道(LINE 功能与您的应用程序之间的通信渠道)。

创建一个渠道
  1. 在 Console 主页上,点击 Create New Provider,然后按照屏幕上的说明创建提供商。

    图片:Create a LINE Provider

  2. 在提供商页面的 Channels 选项卡中,点击 Create a LINE Login channel

  3. 在新渠道创建页面,输入所需信息并点击 Create

  4. 在渠道页面的 Basic settings 选项卡中,选中 Channel ID 和其他 Player Network SDK 配置所需的信息。

    图片:Add LINE app information

  5. 为移动应用程序(Android/iOS)配置渠道。

    在渠道页面的 LINE Login 选项卡中,启用 Mobile app 并输入所需信息。

    图片:LINE Login settings

    要添加新的渠道包名称和相应签名以支持多商店渠道包,请添加新行输入信息。

    图片:Multiple package name in LINE console

  6. 点击 Update 保存配置。

2. 添加用户权限

创建渠道后,该渠道会立即设置为 Developing 模式。只有渠道管理员和测试人员可以使用 LINE 登录功能。

添加测试人员
  1. 登录 LINE Developers Console

  2. 从主页上最近访问过的渠道中选择相应渠道。

    图片:Select LINE channel

  3. 在渠道页面,点击 Roles

  4. Roles 选项卡中,点击 Invite by email

    图片:LINE permission configuration

  5. Invite new members 部分添加测试人员。
    Email:测试者的 LINE 账号
    Role: 测试员

    图片:Add LINE tester

  6. 点击 Send Invitations 发送测试人员邀请。

  7. 等待测试人员接受电子邮件邀请。

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

步骤1:为 LINE 登录配置 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

    [LINE]
    LINE_CHANNEL_ID = {INTL_LINE_CHANNEL_ID}
    • 将 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_LINE_CHANNEL_ID} 替换为在 LINE Developers 上注册的 Channel ID。
  2. 将 LINE 添加到 Info.plist 文件中。

    注意

    由于 LINE 已停止维护 Objective-C 版本的 SDK,而所有后续 SDK 都是 Swift 版本,因此当前的集成是 Swift 版本。

    Swift-LINESDK 仅支持 Xcode10.3 及更高版本。

    更多信息,请参见 适应 Swift SDK

    检查 INTLLINEKit.projmods 中的预定义值,并将 {INTL_BUNDLE_ID} 替换为从 Unity 导出 Xcode 项目之前在 LINE 上配置的 BundleIdentifier(类似于 com.example.demo)。

    {
    "group": "INTL",
    "libs": [],
    "frameworks": [],
    "files": [],
    "folders": [],
    "excludes": [],
    "headerpaths":[],
    "build_settings": {},
    "system_capabilities": {},
    "Info.plist":{
    "LSApplicationQueriesSchemes":
    [
    "lineauth2",
    "line"
    ],
    "CFBundleURLTypes" :
    [
    {
    "CFBundleTypeRole":"Editor",
    "CFBundleURLSchemes":"line3rdp.{INTL_BUNDLE_ID}"
    }
    ]
    }
    }

    替换 {INTL_BUNDLE_ID} 为游戏工程的 BundleIdentifier 类似 com.example.demo (需要与在 LINE 开发者平台上配置的 BundleIdentifier 一致)。

    更多信息,请参见 LINE Developer Portal Bundle ID

步骤2:添加 LINE 登录

LINE 登录前无需安装应用程序。

  • iOS 在有安装和登录 LINE app 的情况下会拉起 LINE app 进行登录;如果没有安装 LINE app,或者在 LINE app 没登录的情况下,会拉起 Web 页面进行登录。
  • iOS 无论是 LINE app 授权还是通过 web 页面登录,账号登录成功后都会拉起 web 页面提示是否拉起游戏客户端,此时点击拒绝的话将不会拉起游戏客户端,游戏客户端也无法收到回调。
  • LINE 的授权登录需要赋予 OpenID,profile 两项权限。前者是为了获取玩家的 LINE OpenID,后者是为了获取玩家的 LINE access token,可以通过 Permissions 字段来设置。如果业务填写的 Permissions 字段为空,那么在登录 LINE 时 Player Network SDK 将默认使用 OpenID 和 profile 权限。
  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.LINE); 
  4. 与游戏后台同步客户端身份验证状态,等待最终验证结果。

步骤3:验收登录功能

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

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

步骤4:发布游戏

要向玩家开放 LINE 登录功能,请将渠道设置为 Published

图片:Release game