Auth and Friends Sample

对验证与好友示例项目进行简单的介绍。

阅读时间10分钟

本文将介绍 验证与好友(Auth and Friends) 示例项目。该项目用到了 Epic在线服务(EOS)SDK

身份验证和好友示例使用 Epic账户服务 进行用户身份验证。你将需要使用与有效应用程序对应的客户端凭证来初始化EOS SDK。有关设置应用程序的信息,请查阅开发人员门户文档。此示例演示的功能可以与任何支持的身份提供程序一起使用。

源代码和项目

你可以在 EOSSDK/Samples/AuthAndFriends/ 目录中找到身份验证和好友项目,该目录包含以下子目录:

子目录内容
/Bin/你将在其中找到游戏可执行文件的输出位置。构建后可执行文件出现的确切子目录视你的配置和平台而定。
/cmake/在Mac和Linux上使用CMake进行构建的助手文件。
/Intermediate/中间构建文件。
/Source/项目源代码。

你还可以在 EOSSDK/Samples/Shared/ 目录中找到某些共享的示例文件。它们被分为以下子目录:

子目录内容
/Assets/共享游戏运行时纹理和字体资产。
/External/共享库。
/Source/全部共享源代码。

Shared/Source/Core/ 目录包含使用EOS SDK登录、验证用户身份和查询好友的示例代码。源目录还包含用于管理游戏本身的代码。

构建示例

Windows DirectX

要编译和构建身份验证和好友示例,请使用Microsoft Visual Studio打开 Samples.sln,并为目标平台(Win32Win64)构建所需配置(Debug_DXRelease_DX)。

成功构建之后,/Bin/ 目录将根据你的配置和目标平台,在子目录中包含可执行文件(AuthAndFriends.exe)。子目录还将包含数据资产和SDK二进制文件的副本。

Windows SDL

要编译和构建身份验证和好友示例,请使用Microsoft Visual Studio 2017打开解决方案 Samples.sln,并为目标平台(Win32Win64)构建所需配置(Debug_SDLRelease_SDL)。

成功构建之后,/Bin/ 目录将根据你的配置和目标平台在子目录中包含可执行文件(AuthAndFriends.exe)。子目录还将包含数据资产和SDK二进制文件的副本。

Mac OSX

要在Mac上构建,你将需要安装以下依赖项:

  • SDL2
  • SDL2_ttf
  • GLEW
  • cmake
  • gcc(通过Xcode的命令行工具)

要编译并构建身份验证和好友示例,你可以使用 Build.shInstall.sh

  • 仅适用于本地用户:通过终端运行 Build.shBuild.command,生成示例项目,然后仅打包最小内容,在示例目录(/Build/AuthAndFriends.app)中本地运行。

  • 在终端运行 Install.shInstall.command, 将依赖项(例如 EOS SDK 动态库、SDL2 库等)与示例应用的程序包(/Install/AuthAndFriends.app)打包在一起,这样就可以将它移到其他地方并仍能运行。

要运行AuthAndFriends示例,请在终端上执行 Run.commandRun.sh

Linux

要在Linux上构建,你将需要安装以下依赖项:

  • SDL2(运行时+头文件)
  • SDL2_ttf(运行时+头文件)
  • GLEW(运行时+头文件)
  • cmake
  • gcc/g++

要编译并构建身份验证和好友示例,请在终端上执行 Install.sh

成功构建后,/Install/ 目录将包含可执行文件(AuthAndFriends)。子目录还将包含数据资产和makefile构建文件的副本。

要运行“身份验证与好友”示例,请在终端上执行 Run.sh

使用Steam API进行身份验证

要使用Steam External Auth支持编译和构建身份验证和好友示例,请使用Microsoft Visual Studio打开 Samples.sln,并构建目标平台(Win32Win64)所需配置(Debug_DX_SteamRelease_DX_SteamDebug_SDL_SteamRelease_SDL_Steam)。

该示例引用了Steam SDK中的文件,可将这些文件下载并提取到示例共享文件夹中(如下所示)。public 文件夹中含有Steam包含文件,而redistributable_bin 文件夹则含有Steam LIB和DLL文件。

Samples.props 文件包含 SteamSDK 属性,该属性具有Steam SDK文件位于以下位置的默认路径:..\Shared\External\SteamSDK

如果你想要从其他位置引用Steam SDK文件,请更改此路径。

为了进行测试,请在AuthAndFriends项目根文件夹中创建 steam_appid.txt(如下所示),并将你的Steam App ID添加到该文件中。该文件将与所需的Steam DLL文件预构建一起复制。

成功构建之后,/Bin/ 目录将根据你的配置和目标平台,在子目录中包含可执行文件(AuthAndFriends.exe)。子目录还将包含数据资产、SDK二进制文件和Steam DLL文件的副本。

要运行该示例,你将需要运行Steam客户端。

该示例将在启动时尝试使用Steam会话票证(Steam Session Ticket)登录。如果你的 账户 尚未与Steam关联,你将转到账户门户登录,身份验证将继续,然后你将登录。

探索示例

如果你想浏览示例,请继续阅读以便了解可用的命令行参数、控制台命令和功能。

命令行参数

身份验证和好友示例支持以下可选命令行参数:

命令行参数用途说明
userid-userid <string>用户ID框将用<userid>文本填充,点击“登录(LOGIN)”按钮(或通过自动登录过程操作)时,将登录用户(由ID <string>指定)。此外,<userid>可以是电子邮件、显示名称或Facebook ID。
password-password <string>密码框将用<password>文本填充,点击“登录(LOGIN)”按钮或通过自动登录过程操作时,用户(带密码<string>)将登录。
autologin-autologin 1EOS SDK初始化后,在游戏开始时,具有指定“userid”和“密码”的用户将自动登录。
productid-productid <string>创建EOS SDK平台选项时,将覆盖产品ID。有关默认值,请参阅 SampleConstants.ProductId
sandboxid-sandboxId <string>创建EOS SDK平台选项时,将覆盖沙盒ID。有关默认值,请参阅 SampleConstants.SandboxId
deploymentId-deploymentId <string>这让你可以在创建EOS SDK平台选项时覆盖部署ID。有关默认值,请参阅 SampleConstants.DeploymentId
clientid-clientid <string>这让你可以在创建EOS SDK平台选项时覆盖客户端凭证ID。同样,有关默认值,请参阅 SampleConstants.ClientCredentialsId
clientsecretclientsecret <string>这让你可以在创建EOS SDK平台选项时覆盖客户端凭证密钥。同样,有关默认值,请参阅 SampleConstants.ClientCredentialsSecret
fullscreen-fullscreen 1如果将其添加到命令行,则游戏将以全屏模式启动(默认为窗口模式)。
logfile-logfile <string>调试输出日志将写出到<string>指定的文件名。此外,默认的调试输出日志文件是“DebugOuput.log”,并且与解决方案文件保存在同一文件夹中。
devhost-devhost <string>“设备身份验证(Dev Auth)”登录选项中的“主机”端口框将包含<string>参数。
devcred-devcred <string>“设备身份验证(Dev Auth)”登录选项中的“凭证”框将包含<string>参数。

控制台命令

身份验证和好友示例支持以下控制台命令,你可以在游戏中输入这些命令:

控制台命令用途说明
TEST测试将测试消息打印到控制台。
CLEAR清除清除控制台输出窗口中的所有文本行。
EXIT退出退出并关闭游戏。
LOGIN登录<USER_ID> <PASSWORD>尝试使用用户ID <USER_ID>和密码<PASSWORD>登录用户。
LOGOUT注销<USER_NAME>尝试注销名为<USER_NAME>的用户。
INVITE邀请<FRIEND_NAME>向显示名称为<FRIEND_NAME>的用户发送好友邀请。
PREV前一个显示前一个已登录用户的信息(如果已登录多个用户)。
NEXT下一个显示下一个已登录用户的信息(如果已登录多个用户)。
NEW新用户显示允许以其他用户身份登录的登录对话框。
FRIENDS好友打开好友覆层。
HELP帮助将有关上述所有控制台命令的信息打印到控制台输出。

要添加更多控制台命令,请参阅 Game.cpp 中的 Game::CreateConsoleCommands 函数。

功能

简单框架具有少量功能,包括登录和注销功能、控制台窗口、好友列表和状态信息。

登录

下图显示的是带有几种登录方法的 好友(FRIENDS) 分段。要登录,请点击一种方法并输入相应的信息。然后,你可以点击 登录(LOG IN) 完成该过程。

登录面板,显示了支持的登录方法。

  • 设备代码(Device Code): 使用包含Epic提供代码的URL登录。
  • 设备身份验证(Dev Auth): 使用开发人员身份验证工具凭证登录。
  • 账户门户(Account Portal): 通过关联你的Epic账户登录。

下图显示了成功登录后的用户显示名称(在右上角):

EOS支持从单个系统同时进行多个账户登录。在此示例中,你可以点击 新增(NEW) 按钮使用新账户登录。如果同时登录多个帐户,则可使用左右箭头在它们之间循环。

设备编码方法

设备编码方法将包含登录代码的URL发送到示例。你可以在示例的控制台日志中找到该URL。将其复制到 好友(FRIENDS) 分段后,你将登录。要取消此过程,请在弹出窗口中点击 取消(Cancel)

设备身份验证方法

要使用设备身份验证方法登录,请输入运行开发人员身份验证工具的主机端口,并提供该工具提供的凭证。输入此信息后,点击 登录(LOG IN)

账户门户方法

使用账户门户方法,你将转到Web浏览器中的Epic账户门户,你可以在其中使用Epic账户登录到你的应用程序。完成Web流程后,你将返回示例。

注销

要注销,请点击 注销(LOG OUT) 按钮。

控制台窗口

控制台记录各种EOS SDK操作中的相关调试输出。此外,控制台会显示以下函数中的调试输出:

函数文本颜色
FDebugLog::Log()
FDebugLog::LogWarning()
FDebugLog::LogError()

注: EOS SDK操作中的错误显示为红色文本,警告显示为橙色文本。

参见下图了解控制台窗口的更多相关信息:

控制台输出(1)记录相关调试信息。此外,还可输入控制台命令(2)或清除控制台输出中的所有时间(3)。最后,可通过点击、拖动并使用Ctrl+C组合键来选择并复制控制台输出中黄色高亮文本。如要选择控制台输出中的所有文本,使用Ctrl+A组合键。

注: 文本会复制到剪贴板。

好友列表

好友列表 是窗口的一个独立部分,其可显示好友及其状态、好友邀请,并可进行交互。须登录后才能使用好友列表(见下图)。

好友列表同时包含分为两种用途的文本字段。第一:其可以显示名称过滤好友。第二:可以输入用户显示名称并按回车键来搜索新好友。如输入的显示名称并非列表中的好友,系统会执行搜索操作,相应用户将以列表显示,并带有添加好友的选项(见下图):

+ 按钮后,即发送好友邀请。受邀请的好友用户在接受或拒接邀请前会显示在好友列表中。

注: 传入的好友邀请会显示接受或拒绝邀请的按钮。

在线状态信息

用户接受邀请后,其便会成为好友,同时将显示更多信息。例如,可查看好友状态(如是否在线、离开还是离线)。此外,在线状态 信息还可显示正在游戏的好友,其名称旁边会显示绿色标签,表明应用程序名称和当前使用平台(见下图)。