三方渠道登录配置
实现第三方渠道登录
LI PASS Web 登录第三方渠道仅支持系统浏览器,任何游戏或应用的内置 WebView 组件均不支持第三方渠道登录:
- 部分第三方渠道出于安全策略考虑,例如 Google 帐号和 Facebook 帐号,已完全禁止在内置 WebView(如 Facebook App、X App、游戏内置浏览器等)内进行网页登录
- WebView 组件不能同时加载两个页面,这意味着它无法加载第三方登录页面来完成登录过程
LI PASS Web 组件的第三方渠道登录目前支持 Apple、Discord、Epic、Facebook、Google、LINE、PS5、Steam、Twitch、X、VK、QQ、Wechat。
LIPassUI 支持第三方渠道登录,请确保您已经配置了三方渠道信息,将渠道的客户端 ID 和密钥配置在 Player Network Console。 请参考 三方渠道接入教程
方法1:通过 Player Network 控制台配置(推荐)
通过 Player Network 控制台配置第三方渠道登录,可以实时地变更需要展示的第三方渠道。详细配置步骤,请参见 Web 登录渠道。
方法2:通过代码配置
<div id="infinite-pass-component"></div>
const pass = new PassFactory.Pass({
env: "test", // Environment
gameID: xxxxx, // Player Network 控制台中配置的 GAME_ID
appID: "", // Player Network 控制台中配置的 APP_ID
config: {
socialList: ['facebook', 'twitter']
}
});
// 调用 `start` 方法将登录启动器挂载到指定的 DOM 节点
pass.start("#infinite-pass-component");
// 您可以监听事件列表,当用户完成登录或注册时获取用户的鉴权信息
pass.on("onLogin", (userInfo) => {
// After the user fails to log in, the 'onLoginError event' will be triggered, and the game logic after the user successfully logs in, can be processed in the event callback
// For example, redirect to a specific page
console.log(userInfo);
});
pass.on("onLoginError", (userInfo) => {
// The 'onLogin event' will be triggered after the user successfully logs in, and the game logic after the user fails to log in, can be processed in the event callback.
console.log(userInfo);
});
关键配置参数
| 参数 | 类型 | 描述 | 备注 |
|---|---|---|---|
| socialList | string[] | 渠道列表,详细配置请参见 config | 选填 |
| socialParams | object | 第三方渠道登录时需要的配置, 详细配置请参见 socialParams | 选填 |
返回参数
| 参数 | 类型 | 描述 |
|---|---|---|
| ret | number | 返回代码 0:请求成功 !=0:请求失败,查看 msg 详细结果说明 |
| msg | string | 结果说明 |
| token | string | Player Network SDK 生成的用户 token 长度:40字节,详见 Token |
| openid | string | Player Network SDK 用户唯⼀标识 默认为 64-bit 无符号整数的字符串,也可以支持 32-bit |
| token_expire_time | int64 | Player Network SDK token 过期时间 Unix时间 |
| user_name | string | 用于登录的用户名 |
| channel_info | object | 登录渠道的渠道信息 更多信息,请参见 渠道信息。 |
| del_account_status | number | 账号注销状态 -1:查询失败 0:未撤回任何注销账号记录或删除号码 (邮件或手机账号) 1:账号注销前的静默期 2:已经成功注销账号 3:正在注销账号 4:注销账号失败 |
| seq | string | 数据流消息序号 |
返回示例
{
channel_info: {
access_token:"xxxxx",
expire_ts: 1641527900,
}
first_login: 0,
msg: "success",
openid: "xxxx",
picture_url: "https://www.google.com/Images/profileA.png",
ret: 0,
seq: "1638935899-1006943754-018668-0000656615",
token: "xxx",
token_expire_time: 1641527900,
del_account_status: 0,
user_name: "user",
}
在登录过程时引导绑定
[可选] 在登录过程中自动引导用户绑定 LI PASS
针对通过第三方渠道登录的用户,若其未使用邮箱绑定 LI PASS,则可在用户登录时引导该用户绑定 LI PASS。
要使用该功能,请在 Player Network 控制台的 账号绑定策略 中开启 引导玩家使用邮箱绑定 LI PASS 和 **登录时自动触发
** 的开关,并在初始化 pass 时传入 webID。
开启后,玩家使用第三方渠道账号登录,将引导通过 LI PASS 绑定弹窗完成绑定。
自动拉起:玩家通过 Web 组件登录后,若识别到玩家未绑定 LI PASS 账号,将自动拉起绑定弹窗,根据配置要求,完成/跳过绑定后才可进入网页。
- 允许玩家跳过绑定 - 在绑定邮箱界面展示 跳过 按钮,使玩家能够通过该按钮跳过邮箱绑定步骤。
- 强制玩家绑定 - 在绑定邮箱界面隐藏 跳过 按钮,玩家必须绑定邮箱后,才能完成登录步骤。


您可监听 onBindError 事件获取和绑定错误相关的信息:
const pass = new PassFactory.Pass({
env: "test", // Environment
gameID: xxxxx, // Player Network 控制台中配置的 GAME_ID
appID: "", // Player Network 控制台中配置的 APP_ID
webID: "xxxxxxxxxxxx", // Player Network 控制台中配置的 WEB_ID
});
// 调用 `start` 将登录启动器挂载到指定的 DOM 节点
// 登录成功后登录结果在 `onLogin`、`onRegister` 事件返回
pass.start("#infinite-pass-component");
// 当用户完成登录和绑定时,会触发 `onLogin` 事件,同时会返回绑定的结果 `has_bind_lip`
pass.on("onLogin", (userInfo) => {
console.log(userInfo.has_bind_lip);
});
// 您可以监听 `onBindError` 事件,当绑定出现错误时,会触发该流程
pass.on("onBindError", (result) => {
console.log(result);
});
// 可监听 `onClose` 事件,用户在绑定流程中点击关闭按钮,并且 Player Network 控制台中的绑定策略配置为 **强制玩家绑定**,将触发该事件
pass.on("onClose", (accountApi) => {
console.log(accountApi);
});
| 参数 | 类型 | 描述 |
|---|---|---|
| has_bind_lip | boolean | 是否绑定了 LI PASS true:用户已绑定 LI PASS,或在本次登录过程中完成绑定 false:用户跳过了绑定 |
[可选] 在登录过程中自动引导用户绑定三方渠道
可在用户登录时引导该用户绑定三方渠道,如果用户没有绑定过 LI PASS 帐号,会优先绑定 LI PASS 帐号,每次登录过程中仅可以绑定一次渠道。
绑定第三方渠道的范围必须是登录时第三方渠道渠道的子集。
要使用该功能,请在 Player Network 控制台的 账号绑定策略 中开启 引导玩家绑定第三方渠道 和 **登录时自动触发
** 的开关,并在初始化 pass 时传入 webID。
您可监听 onBindError 事件获取和绑定错误相关的信息:
const pass = new PassFactory.Pass({
env: "test", // Environment
gameID: xxxxx, // Player Network 控制台中配置的 GAME_ID
appID: "", // Player Network 控制台中配置的 APP_ID
webID: "xxxxxxxxxxxx", // Player Network 控制台中配置的 WEB_ID
});
// 调用 `start` 将登录启动器挂载到指定的 DOM 节点
// 登录成功后登录结果在 `onLogin`、`onRegister` 事件返回
pass.start("#infinite-pass-component");
// 当用户完成登录和绑定时,会触发 `onLogin` 事件,同时会返回绑定的结果 `has_bind_lip`
pass.on("onLogin", (userInfo) => {
console.log(userInfo.has_bind_lip);
});
// 您可以监听 `onBindError` 事件,当绑定出现错误时,会触发该流程
pass.on("onBindError", (result) => {
console.log(result);
});
// 可监听 `onClose` 事件,用户在绑定流程中点击关闭按钮,并且 Player Network 控制台中的绑定策略配置为 **强制玩家绑定**,将触发该事件
pass.on("onClose", (accountApi) => {
console.log(accountApi);
});
| 参数 | 类型 | 描述 |
|---|---|---|
| has_bind_lip | boolean | 是否绑定了 LI PASS true:用户已绑定 LI PASS,或在本次登录过程中完成绑定 false:用户跳过了绑定 |
| socialBindList | object | 用户的三方渠道绑定列表 |
socialBindList
| 参数 | 类型 | 描述 |
|---|---|---|
| channelId | number | 渠道 ID |
| channelName | string | 渠道唯一标识 |
| isNewlyBound | boolean | 是否本次操作绑定,用于区分历史绑定和本次绑定 |
登录时获取玩家邮箱
[可选] 第三方渠道登录时获取玩家邮箱
此项设置属于 Player Network 控制台的 第三方渠道配置,Web 端运营角色将无权限访问,请联系业务完成配置。
要使用 Web 绑定模块的快速绑定功能,需先设置在第三方渠道登录时获取玩家邮箱的权限。
- 基于合规考虑,可针对特定来源对返回的
email做 mask 处理,如有需求请联系 Player Network 助手打开。 - 可在后台流水日志中上报 hash 后的
base64(sha256(email)),如有需求请联系 Player Network 助手打开。 - 可用于验证玩家信息或绑定列表是否包含
email信息,如有需求请联系 Player Network 助手打开。 - 可用于 iOS Firebase 的 Private Set Membership(PSM)功能,详见 Firebase iOS 工程配置。
以下为支持返回玩家邮箱的第三方渠道:
Apple
Apple 获取玩家邮箱需要玩家授权,如果玩家拒绝授权将无法获取到玩家邮箱,详见 Login 接口传入 email 和 fullName。
-
使用编辑工具,将
email权限添加到 [Dynamic] 下的APPLE_LOGIN_PERMISSION。 -
在 Player Network 控制台 开启 email 返回功能,将 return_email 设置为 YES,详细步骤请参见 第三方渠道配置。
在 Player Network 控制台 开启 email 返回功能,将 return_email 设置为 YES,详细步骤请参见 第三方渠道配置。
-
使用编辑工具,将
email权限添加到 [Dynamic] 下的FACEBOOK_LOGIN_PERMISSION。如果INTLConfig.ini没有配置FACEBOOK_LOGIN_PERMISSION,则会自动带上email权限。 -
在 Meta for Developers 配置 email 权限。email 权限需要有 高级访问级别,才能让所有应用都能获取到玩家的 email。

-
在 Player Network 控制台开启 email 返回功能,将 return_email 设置为 YES,详细步骤请参见 第三方渠道配置。
X
-
在 X Developer Platform 的 User authentication settings 下,勾选 Request email from users。
-
在 Player Network 控制台 开启 email 返回功能,将 return_email 设置为 YES,详细步骤请参见 第三方渠道配置。