Copyright (c) 2017 Google Inc. All rights reserved.
Google Sign-In API plugin for Unity game engine. Works with Android and iOS. This plugin exposes the Google Sign-In API within Unity. This is specifically intended to be used by Unity projects that require OAuth ID tokens or server auth codes.
It is cross-platform, supporting both Android and iOS.
See Google Sign-In for Android for more information.
To authenticate you need to create credentials on the API console for your application. The steps to do this are available on Google Sign-In for Android or as part of Firebase configuration. In order to access ID tokens or server auth codes, you also need to configure a web client ID.
This file contains the client-side information needed to use Google Sign-in. The details on how to do this are documented on the Developer website.
Once you have the configuration file, open it in a text editor. In the middle of the file you should see the __oauth_client__ section:
"oauth_client": [
{
"client_id": "411000067631-hmh4e210xxxxxxxxxx373t3icpju8ooi.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "411000067631-udra361txxxxxxxxxx561o9u9hc0java.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.your.package.name.",
"certificate_hash": "7ada045cccccccccc677a38c91474628d6c55d03"
}
}
]
There are 3 values you need for configuring your Unity project:
client_id
value for the oauth client with client_type == 3.Create a new Unity project and import the GoogleSignIn-1.0.0.unitypackage
(or the latest version).
This contains native code, C# Unity code needed to call the Google Sign-In API for both Android and iOS.
Import the GoogleSignIn-sample.unitypackage
which contains the sample scene and
scripts. This package is not needed if you are integrating Google Sign-in into
your own application.
Assets/SignInSample/MainScene
.Assets/Plugins/Android
.For iOS, follow the instructions for creating a GoogleService-Info.plist file on https://developers.google.com/identity/sign-in/ios/start-integrating.
In Unity, after switching to the iOS player, make sure to run the Play Services Resolver. This will add the required frameworks and libraries to the XCode project via CocoPods.
After generating the XCode project from Unity, download the GoogleService-Info.plist file from the Google Developers website and add it to your XCode project.
To use the Play Games Services Gamer profile when signing in, you need to edit the
dependencies in Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml
.
Uncomment the play-services-games dependency and re-run the resolution.
Follow the instructions to use Firebase Auth with Credentials on the Firebase developer website.
Make sure to copy the google-services.json and/or GoogleService-Info.plist to your Unity project.
Then to use Google SignIn with Firebase Auth, you need to request an ID token when authenticating. The steps are:
GoogleSignIn.Configuration = new GoogleSignInConfiguration {
RequestIdToken = true,
// Copy this value from the google-service.json file.
// oauth_client with type == 3
WebClientId = "1072123000000-iacvb7489h55760s3o2nf1xxxxxxxx.apps.googleusercontent.com"
};
Task<GoogleSignInUser> signIn = GoogleSignIn.DefaultInstance.SignIn ();
TaskCompletionSource<FirebaseUser> signInCompleted = new TaskCompletionSource<FirebaseUser> ();
signIn.ContinueWith (task => {
if (task.IsCanceled) {
signInCompleted.SetCanceled ();
} else if (task.IsFaulted) {
signInCompleted.SetException (task.Exception);
} else {
Credential credential = Firebase.Auth.GoogleAuthProvider.GetCredential (((Task<GoogleSignInUser>)task).Result.IdToken, null);
auth.SignInWithCredentialAsync (credential).ContinueWith (authTask => {
if (authTask.IsCanceled) {
signInCompleted.SetCanceled();
} else if (authTask.IsFaulted) {
signInCompleted.SetException(authTask.Exception);
} else {
signInCompleted.SetResult(((Task<FirebaseUser>)authTask).Result);
}
});
}
});
To build the plugin run ./gradlew -PlintAbortOnError build_all
. This builds the support aar
library with lint warnings as errors and packages the plugin into a .unitypackage file. It
also packages the sample scene and script in a separate package.
There's also a shortcut for linux/mac: ./build_all
.
Post questions to this Github project.