Authentication Native SDK
Implement player authentication with the Native SDK to sign in anonymously, refresh tokens, and manage player sessions with OpenID providers.
Read time 3 minutesLast updated 15 hours ago
Prerequisites
To get started with Unity Authentication, you need to do the following:Get started
Follow these steps to get started with the Native SDK:- From the Unity Cloud Dashboard, retrieve your Project ID and environment name from your Project Details page.
- Download and install the SDK from the Unity Cloud Dashboard.
- Create a object.
Unity::Authentication::AuthenticationClient - Use the and
SetProjectIdparameters on the AuthenticationClient object you created in the previous step to set those values to the ones from the Unity Cloud Dashboard.SetEnvironmentName - Run , and take the resulting
SignInAnonymouslyandPlayerIdfrom theIdToken.AuthenticationSignInResponse- Alternatively, after the callback has fired successfully, get and
PlayerIdby usingIdTokenandAuthenticationClient::GetToken.AuthenticationClient::GetPlayerId
- Alternatively, after the callback has fired successfully, get
Response structures
AuthenticationSignInCallbackAuthenticationSignInResponseSignInAnonymouslyRefreshTokenAuthenticationSignInResponse- : the ID token that is returned by the
Tokencall.AuthenticationSignIn - : the player ID that is associated with the ID token.
PlayerId - : an
ExpiresInvalue that represents the number of seconds before the token expires.int
The following is an example of an AuthenticationClient and sign-in callback:
unity::uaslib::AuthenticationClient client;client.SetEnvironmentName(UNITY_ENVIRONMENT_NAME);client.SetProjectId(UNITY_PROJECT_ID);Unity::Authentication::AuthenticationSignInCallback cb;cb = [](const unity::uaslib::AuthenticationSignInResponse &response) { std::cout << "Authentication Sign In Response:\n"; std::cout << "Token: " << response.Token << "\n"; std::cout << "PlayerId: " << response.PlayerId << "\n"; std::cout << "ExpiresIn: " << response.ExpiresIn << "\n";};client.SignInAnonymously(cb);//Running ClearSessionToken prior to another SignInAnonymously//will result in a new PlayerIdclient.ClearSessionToken();client.SignInAnonymously(cb);client.RefreshToken(cb);
Refresh a token
After sign-in, the SDK can extend the authentication for a specificPlayerIdRefreshTokenPlayerIdcb = [&tmpProcessing](const unity::uaslib::AuthenticationSignInResponse &response) { std::cout << "Authentication Sign In Response:\n"; std::cout << "Token: " << response.Token << "\n"; std::cout << "PlayerId: " << response.PlayerId << "\n"; std::cout << "ExpiresIn: " << response.ExpiresIn << "\n"; tmpProcessing = false;};client.RefreshToken(cb);
Delete a player
Aa active Authentication session can use theDeletePlayerTokenPlayerIddeleteCb = [](const unity::uaslib::AuthenticationDeletePlayerResponse &response) { std::cout << "Authentication Delete Player Response:\n"; std::cout << (response.IsSuccessful() ? "Completed Successful\n" : "Completed Failure\n"); tmpProcessing = false; };client.DeletePlayer(deleteCb);
OpenID sign-in, linking, and unlinking
Setup
Add an OpenID Connect ID Provider to the Unity Dashboard to use OpenID sign-ins. Navigate to Player Authentication > Identity Providers to set the OpenID Connect ID provider.Sign-in
You can create new Unity Authentication sessions connected to the IdProvider after you have set up an OpenID ID Provider on the Unity Dashboard. Provide a token from the service and the IdProvider name, along with an optionalAuthenticationSignInCallbackGetPlayer()auto IdToken = "AnOpenIdToken";auto IdProvider = "OpenIdProviderName";cb = [this](const unity::uaslib::AuthenticationSignInResponse &response) { std::cout << "Authentication Sign In Response:\n"; std::cout << "Token: " << response.Token << "\n"; std::cout << "PlayerId: " << response.PlayerId << "\n"; std::cout << "ExpiresIn: " << response.ExpiresIn << "\n";};client.SignInOpenID(IdToken, IdProvider, cb);
Linking
Using theLinkOpenID()IdTokenIdProviderAuthenticationLinkCallbackUnity::Authentication::AuthenticationLinkCallback cb; auto IdToken = "AnOpenIdToken"; auto IdProvider = "OpenIdProviderName"; cb = [this](const unity::uaslib::AuthenticationLinkPlayerResponse&response) { std::cout << "Authentication Sign In Response:\n"; std::cout << "PlayerId: " << response.PlayerId << "\n"; }; client.SignInOpenID(IdToken, IdProvider, cb);
Unlinking
You can remove an OpenID connection from an OpenID connected authentication session by runningUnlinkOpenID()IdProviderEnvironmentIdIdProviderEnvironmentIdAuthenticationPlayerGetPlayer()unity::uaslib::AuthenticationClient client;client.SetEnvironmentName(UNITY_ENVIRONMENT_NAME);client.SetProjectId(UNITY_PROJECT_ID);Unity::Authentication::AuthenticationSignInCallback cb;cb = [](const unity::uaslib::AuthenticationSignInResponse &response) { std::cout << "Authentication Sign In Response:\n"; std::cout << "Token: " << response.Token << "\n"; std::cout << "PlayerId: " << response.PlayerId << "\n"; std::cout << "ExpiresIn: " << response.ExpiresIn << "\n";};client.SignInAnonymously(cb);//Running ClearSessionToken prior to a another SignInAnonymously//will result in a new PlayerIdclient.ClearSessionToken();client.SignInAnonymously(cb);client.RefreshToken(cb);