跳到主要内容

PS5

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

注意

PS5 的开发一般不面向个人开发者,需要通过公司的商务联系 Sony 开通 PS5 开发权限。

前提条件

1. 在 PlayStation5 DevNet 设置游戏
申请 Client ID 和 Client Secret

成为开发者后,需要在 PlayStation5 DevNet 注册相应的游戏应用。

  1. PlayStation5 DevNet,点击页面上方的 Titles > Titles and products 打开 Titles and Products 页面。

  2. 点击页面左上角的 New product

    图片:PS5 Register Product

  3. Add a new product 弹窗,输入基本产品信息。

    说明

    选择 App ServerProduct 类型。

    图片:PS5 Add Product

  4. 点击 Add Product 以添加一个新产品。
    Add a New Service 页面将在产品添加成功后显示。

  5. 由于 Player Network SDK 使用 refresh token 进行 PS5 token 的刷新,在 Client ID 服务配置页面勾选 use refresh token 选项。

    图片:PS5 Refresh Token

  6. 点击 Confirm Client ID configuration
    客户端 ID 服务配置页面被刷新以确认客户端 ID 信息。

  7. 点击 Request Client ID 完成新产品注册过程。
    Sony 需要时间才能创建产品。在后端进程完成后,将显示注册产品的页面。

    图片:PS5 Request Client ID

  8. 点击 Download Client Secret 下载产品的 Client Secret。将 Client IDClient Key 发给 Player Network 后台配置。

    图片:PS5 Download Client Secret

[可选] 开通 DUID

DUID(Device Unique ID)是标识 PS5 设备与登录用户无关的唯一 ID。使用 DUID 需要开通权限,游戏需手动提客单申请开通:
https://game.develop.playstation.net/support/newissue/gdtg-tokyo

从 Player Network SDK V1.22 开始,Player Network 支持获取 DUID。若游戏已开通 DUID 权限,可以通过 GetDeviceInfo 接口获取DUID。

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

步骤1:为 PS5 登录配置 SDK

INTLConfig.ini 文件中配置 PS5_CLIENT_ID 字段,填写 PlayStation5 DevNet 中申请到的 Client ID

Player Network SDK 默认会获取 DUID,如果游戏无需使用 DUID 可以通过修改 INTL_PS5_DUID_ENABLE 字段关闭。更多详情,请参见 开通 DUID

[INTL PS5]
PS5_CLIENT_ID = {INTL_PS5_CLIENT_ID}
INTL_PS5_DUID_ENABLE = 0 //1: 启用 DUID,0: 禁用 DUID

步骤2:添加 PS5 登录

PS5 账号服务

PS5 系统软件允许多个用户同时登录系统,并允许轻松创建多人游戏。PlayStation 根据游戏人数将游戏分为三种,主要包括本地单人登录的游戏、本地多人登录的游戏和本地登录人数大于游戏手柄需要用户轮流玩的游戏。

对于本地单人登录的游戏,游戏就无需处理复杂的 PS 账号登录流程,可以将启动游戏的初始用户标识为当前游戏的登录用户。如果用户想切换其账号以登录游戏,则需要将当前账号注销并重新启动游戏应用程序。

当前 Player Network SDK 仅支持本地单人游戏。

权限字段

PS5 的游戏登录会调用 Login 或 Player Network SDK 的 LoginWithMappedChannel 接口。游戏登录时需要在权限字段中填写获取玩家信息的 scopescope 表示服务器可以获取玩家信息的范围。

scope 建议使用 psn:s2s openid id_token:psn.basic_claims

PS5 配置

为了保证 Player Network SDK 功能正常,需要在 param.json 进行如下设置:

  • 由于 Player Network SDK 支持单人玩家登录,请确保打开 InitialUserAlwaysLoggedIn 标志。

  • 由于使用下载数据区保存数据,因此需要设置 downloadDataSize 至少为 1MB。

获取 PS5 体系内的用户 ID

成功登录后,Unity 的 INTLAuthResult 和 UE 的 FINTLAuthResult 数据结构中包含 ChannelInfo 会有提供 userId

"{\"code\":\"v3.g21b1B\",\"issuerId\":1,\"userId\":281231663,\"map_info\":{\"sacc_uid\":\"56908591234\",\"sacc_token\":\"3RY3JXA2nT9gJlsi5J8S7SKklLQ@1U_ILn1234563ejYPBzH1o81OYAJNXsgVSSZCkwYjl_m1nOF6ZwfUzHalw==\",\"sacc_account_plat_type\":25},\"access_token\":\"d6013ba2-679c-4f21-99ca-3b57123456b4\",\"uid\":\"4574198251123456590\",\"expire_ts\":1637329774,\"refresh_token\":\"7470a803-51a1-4120-ad29-e488c2111199\"}"
  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.PS5,"psn:s2s openid id_token:psn.basic_claims","{}");
  4. 与游戏后台同步客户端身份验证状态,等待最终验证结果。

步骤3:验收登录功能

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

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