Forum Discussion
GamerReality
1 year agoStart Partner
Accessing Player's Oculus Username and Displaying it in-game.
Hello,
I'm developing a multiplayer VR game for Quest and Windows PCVR. Unity 2023.2.19, XR Plug-in is set to OpenXR, latest XR plugins, and Meta XR Platform SDK 68.0.0.
I've only pieced together loose information online to make this system for grabbing and displaying the player's Oculus/Meta/Account username, but I need help because it's not working. I'm going this route because I don't want to add moderation and check for unique usernames if Meta already has these systems.
I made sure that the Meta XR Platform SDK was in my project which is the only Meta package I have: Meta XR Platform SDK | Integration | Unity Asset Store
It builds and runs fine, it authenticates successfully thanks to the instructions from here: https://developer.oculus.com/documentation/unity/ps-entitlement-check/
try
{
Core.AsyncInitialize(appID); //Their docs had "Platform.Core.AsyncInitialize(appID), but their example only had ()"
Entitlements.IsUserEntitledToApplication().OnComplete(EntitlementCallback);
}
catch(UnityException e)
{
Debug.LogError("Platform failed to initialize due to exception.");
Debug.LogException(e);
// Immediately quit the application.
UnityEngine.Application.Quit();
}
// Called when the Meta Horizon platform completes the async entitlement check request and a result is available.
void EntitlementCallback (Message msg)
{
if (msg.IsError) // User failed entitlement check
{
// Implements a default behavior for an entitlement check failure -- log the failure and exit the app.
Debug.LogError("You are NOT entitled to use this app.");
UnityEngine.Application.Quit();
}
else // User passed entitlement check
{
// Log the succeeded entitlement check for debugging.
Debug.Log("You are entitled to use this app.");
// From https://communityforums.atmeta.com/t5/Unity-VR-Development/How-do-i-access-oculus-username/td-p/889007
Oculus.Platform.Users.GetLoggedInUser().OnComplete(GetLoggedInUserCallback);
}
}
private void GetLoggedInUserCallback(Message msg) {
if (!msg.IsError) {
User user = msg.GetUser();
Oculus_userName = user.OculusID;
Oculus_displayName = user.DisplayName;
PlayerUsernameWeWillSet = Oculus_displayName;
}
else
{
setDefaultPlayerNameInstead = true;
}
}
But when I try to use PlayerUsernameWeWillSet, it's not null or empty because I have checks to set it to a generic player name instead. I know it can take a few seconds, so I have logic to rerun a coroutine every so often trying to see if we got the username but it's still not getting it. My PCVR version is working with a username I'm grabbing from a different source, it displays properly in a text field.
Maybe you see the problem, but if you don't you can help me know how to debug this and get a log after building it as an APK which I haven't tried yet.
Thank you.
5 Replies
- IceColdLionProtege
This may be the problem of you having to upload your APK to the store, and then downloading it from the store
- GamerRealityStart Partner
Forgot to mention authentication works, I've had it kick me if I sideload it but I publish it to a private alpha channel, download the update, and I'm authenticated in the game.
- IceColdLionProtege
So you want to display the unique Oculus username? That would be the user.OculusID. If this is not the problem sorry for the misunderstanding. I would recommend Unity's android debug manual for debugging standalone builds.
You can use ADB from the cmd line
https://docs.unity3d.com/Manual/android-debugging-on-an-android-device.html
I prefer this tool as it logs straight to the Unity console.
https://docs.unity3d.com/Manual/com.unity.mobile.android-logcat.html- GamerRealityStart Partner
Yes I tried putting those things into place, that's in my third code block in my discussion post. I'll put it again:
private void GetLoggedInUserCallback(Message msg) {
if (!msg.IsError) {
User user = msg.GetUser();
Oculus_userName = user.OculusID;
Oculus_displayName = user.DisplayName;
PlayerUsernameWeWillSet = Oculus_displayName;
}
else
{
setDefaultPlayerNameInstead = true;
}
}
- IceColdLionProtege
This will give you the unique Oculus username. The display name is the user's first and last name if I recall correctly.
PlayerUsernameWeWillSet = user.OculusID;
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 5 months ago
- 2 years ago
- 15 days ago
- 8 months ago