Authentication Native SDK
Implement player authentication with the Native SDK to sign in anonymously, refresh tokens, and manage player sessions with OpenID providers.
阅读时间3 分钟最后更新于 18 天前
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);