Skip to main content

三方渠道登录配置

实现第三方渠道登录

caution

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。

note

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);
});

关键配置参数

参数类型描述备注
socialListstring[]渠道列表,详细配置请参见 config选填
socialParamsobject第三方渠道登录时需要的配置, 详细配置请参见 socialParams选填

返回参数

参数类型描述
retnumber返回代码
0:请求成功
!=0:请求失败,查看 msg 详细结果说明
msgstring结果说明
tokenstringPlayer Network SDK 生成的用户 token
长度:40字节,详见 Token
openidstringPlayer Network SDK 用户唯⼀标识
默认为 64-bit 无符号整数的字符串,也可以支持 32-bit
token_expire_timeint64Player Network SDK token 过期时间
Unix时间
user_namestring用于登录的用户名
channel_infoobject登录渠道的渠道信息
更多信息,请参见 渠道信息
del_account_statusnumber账号注销状态
-1:查询失败
0:未撤回任何注销账号记录或删除号码 (邮件或手机账号)
1:账号注销前的静默期
2:已经成功注销账号
3:正在注销账号
4:注销账号失败
seqstring数据流消息序号

返回示例

{
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 账号,将自动拉起绑定弹窗,根据配置要求,完成/跳过绑定后才可进入网页。

  • 允许玩家跳过绑定 - 在绑定邮箱界面展示 跳过 按钮,使玩家能够通过该按钮跳过邮箱绑定步骤。
  • 强制玩家绑定 - 在绑定邮箱界面隐藏 跳过 按钮,玩家必须绑定邮箱后,才能完成登录步骤。
ImageImage

您可监听 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_lipboolean是否绑定了 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_lipboolean是否绑定了 LI PASS
true:用户已绑定 LI PASS,或在本次登录过程中完成绑定
false:用户跳过了绑定
socialBindListobject用户的三方渠道绑定列表

socialBindList

参数类型描述
channelIdnumber渠道 ID
channelNamestring渠道唯一标识
isNewlyBoundboolean是否本次操作绑定,用于区分历史绑定和本次绑定

登录时获取玩家邮箱

[可选] 第三方渠道登录时获取玩家邮箱
note

此项设置属于 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

note

Apple 获取玩家邮箱需要玩家授权,如果玩家拒绝授权将无法获取到玩家邮箱,详见 Login 接口传入 emailfullName

  1. 使用编辑工具,将 email 权限添加到 [Dynamic] 下的 APPLE_LOGIN_PERMISSION

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

Google

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

Facebook

  1. 使用编辑工具,将 email 权限添加到 [Dynamic] 下的 FACEBOOK_LOGIN_PERMISSION。如果 INTLConfig.ini 没有配置 FACEBOOK_LOGIN_PERMISSION,则会自动带上 email 权限。

  2. Meta for Developers 配置 email 权限。email 权限需要有 高级访问级别,才能让所有应用都能获取到玩家的 email。

    图片: Facebook 权限申请

  3. 在 Player Network 控制台开启 email 返回功能,将 return_email 设置为 YES,详细步骤请参见 第三方渠道配置

X

  1. X Developer PlatformUser authentication settings 下,勾选 Request email from users

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