Unity 3D中调用Oculus Users.GetLoggedInUser()获取DisplayName为空如何解决?
解决Unity中Oculus本地用户DisplayName为空的问题
你遇到的DisplayName为空的情况,是因为Users.GetLoggedInUser()仅返回基础用户信息,并未包含完整的用户资料字段。可以通过以下步骤解决:
检查权限配置
确保在Oculus开发者后台的应用权限设置中,开启了user_profile权限,同时在Unity的Oculus Platform插件设置里,确认已声明该权限。没有权限的话,无法获取用户的公开资料信息。调用
Users.Get()拉取完整用户信息
使用登录用户的ID,主动调用Users.Get()接口获取包含DisplayName的完整用户数据,示例代码如下:Users.GetLoggedInUser().OnComplete(loggedInMessage => { if (!loggedInMessage.IsError) { var userId = loggedInMessage.GetUser().ID; // 拉取完整用户详情 Users.Get(userId).OnComplete(userDetailsMessage => { if (!userDetailsMessage.IsError) { Oculus.Platform.Models.User fullUser = userDetailsMessage.GetUser(); string displayName = fullUser.DisplayName; userId = fullUser.ID; ImageURL = fullUser.ImageURL; OculusID = fullUser.OculusID; // 这里可正常获取所有字段 } else { OvrAvatarLog.LogError($"获取用户详情失败: {userDetailsMessage.GetError().Message}", ""); } }); } else { OvrAvatarLog.LogError($"获取登录用户失败: {loggedInMessage.GetError().Message}", ""); } });验证账户隐私设置
确认测试使用的Oculus账户已设置公开的DisplayName,部分用户会通过隐私设置隐藏自己的显示名称,导致接口返回空值。
内容的提问来源于stack exchange,提问作者Led Machine
相关产品推荐
相关产品推荐

