游戏开发者需要能够使用 OAuth,以便用户可以将访问外部网站和服务的权限委派给他们,而不是直接向正在运行的游戏提供自己的凭据。 在实践中,这可能意味着从验证游戏到在社交媒体上分享游戏中的亮点再到从外部提供商请求用户数据等一切操作。
注意
此处介绍的 OAuth 解决方案并不支持每个可能显示的可信 web 页面。 此解决方案依赖于在内存高度受限的环境中在游戏顶部呈现网页。 开发人员需要测试其的网页在没有问题的情况下是否符合内存限制。
XGameUiShowWebAuthentication
流由三个函数组成,通常以下列顺序被调用:
调用 XGameUiShowWebAuthenticationAsync 或 XGameUiShowWebAuthenticationWithOptionsAsync,开始异步身份验证请求。 这会导致向用户显示 Web 视图(覆盖当前应用程序),用户可以与之交互或通过按“后退”取消。 “选项”变型允许调用方选择是否全屏显示 Web 视图。
请求 URI 必须是一个安全的 HTTPS 地址。 它表示向用户显示的 Web 视图的初始 URI(可能包含服务的用户身份验证字段)。
回调 URI 将与在显示给用户的 Web 视图中导航到的每个 URI 匹配。 绝不会访问回调 URI,而是在用户选择链接或 Web 服务器启动重定向时,将控制归还给调用游戏。
调用 XGameUiShowWebAuthenticationResultSize 以获取存储之前已完成的身份验证请求所需的缓冲区大小。 此大小是可变的,因为服务器响应可以包含任意数量的数据。
调用 XGameUiShowWebAuthenticationResult 以获取之前已完成的身份验证请求的结果。 之前应该已经通过调用 XGameUiShowWebAuthenticationResultSize 获取了所需的缓冲区大小。
调用
XGameUiShowWebAuthenticationResult
将生成用于存储结果的字节数,以及指向所提供缓冲区内包含的XGameUiWebAuthenticationResultData
结构的指针。身份验证请求的结果存储在 XGameUiWebAuthenticationResultData 结构中:
响应状态描述操作的整体结果。
响应数据计数包含响应的大小,包括字符串终止符。
响应数据包含基回调 URI,包括 OAuth 提供程序在成功对用户进行身份验证时添加的任何参数(访问令牌、到期时间等),以及失败时的 null 字符串。 此外,还可以检查
responseStatus
结构成员。 如果身份验证浏览器成功导航到完成 URI,它将包含S_OK
。 否则,它将包含E_CANCELLED
,指示用户通过按“后退”取消。
另请参阅
XGameUiShowWebAuthenticationAsync
XGameUiShowWebAuthenticationWithOptionsAsync