기술 자료

Authentication Native SDK

Implement player authentication with the Native SDK to sign in anonymously, refresh tokens, and manage player sessions with OpenID providers.
읽는 시간 5분최근 업데이트: 10시간 전

Prerequisites

To get started with Unity Authentication, you need to do the following:
  1. Create a Unity ID.
  2. Create a project in the Unity Dashboard.

Get started

To get started with the Native SDK, follow these steps:
  1. In the Unity Dashboard, select Development > Settings to retrieve your Project ID from the Project settings page.
  2. Retrieve your environment name from the Environments page.
  3. In the Unity Dashboard, select Player Authentication > Packages & SDKs, then download the Native SDK for your platform.
  4. Create a
    unity::uaslib::AuthenticationClient
    object.
  5. Use the
    SetProjectId
    and
    SetEnvironmentName
    methods on the
    AuthenticationClient
    object you created in the previous step to set those values to the ones from the Unity Dashboard.
  6. Run
    SignInAnonymously
    , and take the resulting
    PlayerId
    and
    IdToken
    from the
    AuthenticationSignInResponse
    .
    • Alternatively, after the callback has fired successfully, get
      PlayerId
      and
      IdToken
      by using
      AuthenticationClient::GetToken
      and
      AuthenticationClient::GetPlayerId
      .

Response structures

AuthenticationSignInCallback
and
AuthenticationSignInResponse
run and pass information when a
SignInAnonymously
or
RefreshToken
call is completed.
The
AuthenticationSignInResponse
contains the following information:
  • IdToken
    : the ID token that's returned by the
    AuthenticationSignIn
    call.
  • PlayerId
    : the player ID that's associated with the ID token.
  • ExpiresIn
    : an
    int
    value that represents the number of seconds before the token expires.
참고
An AuthenticationPlayer
PlayerId
contains references to all external platform sign-ins by this
PlayerId
when the external platform sign-ins are implemented.
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 PlayerId client.ClearSessionToken(); client.SignInAnonymously(cb); client.RefreshToken(cb);

Refresh a token

After sign-in, the SDK can extend the authentication for a specific
PlayerId
for a session by refreshing the authentication token. To refresh the token, call
RefreshToken
, which will re-authenticate the same
PlayerId
and return a new token in the callback.
cb = [&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

An active Authentication session uses the
DeletePlayer
method to delete the currently signed-in player from the Authentication service. After the service confirms the deletion, the
AuthenticationClient
clears the cached
Token
and
PlayerId
, so the player must sign in again.
deleteCb = [](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

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.

OpenID 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 optional
AuthenticationSignInCallback
to SignInOpenID to create the new session.
An associated AuthenticationPlayer containing all connected
IdProviders
is available through the
GetPlayer()
method.
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 the
LinkOpenID()
method with an
IdToken
from the service, the
IdProvider
name, and an additional
unity::uaslib::AuthenticationLinkPlayerCallback
, you can associate an OpenID connection with an anonymous authentication session.
You can also add an additional OpenID connection to an existing OpenID-connected authentication session.
unity::uaslib::AuthenticationLinkPlayerCallback cb; auto IdToken = "AnOpenIdToken"; auto IdProvider = "OpenIdProviderName"; cb = [this](const unity::uaslib::AuthenticationLinkPlayerResponse &response) { std::cout << "Authentication Link Response:\n"; std::cout << "PlayerId: " << response.PlayerId << "\n"; }; client.LinkOpenID(IdToken, IdProvider, cb);

Unlinking

You can remove an OpenID connection from an OpenID connected authentication session by running
UnlinkOpenID()
with the
idProvider
and
externalId
. The
idProvider
and
externalId
are accessible from the ExternalId’s vector of an
AuthenticationPlayer
retrieved from either the SignIn or Link responses or using the
GetPlayer()
method.
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::uaslib::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 PlayerId client.ClearSessionToken(); client.SignInAnonymously(cb); client.RefreshToken(cb);

Additional Resources