diff --git a/Assets/GoogleSignIn.meta b/Assets/GoogleSignIn.meta new file mode 100644 index 00000000..b61c9432 --- /dev/null +++ b/Assets/GoogleSignIn.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a089c79cc334748a5a29c5f219b7cfd4 +folderAsset: yes +timeCreated: 1490807626 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor.meta b/Assets/GoogleSignIn/Editor.meta new file mode 100644 index 00000000..d55e3f7a --- /dev/null +++ b/Assets/GoogleSignIn/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a7e77ece57ef34772969fad4915b1a4c +folderAsset: yes +timeCreated: 1490978071 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml b/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml new file mode 100644 index 00000000..625d2e51 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml @@ -0,0 +1,19 @@ + + + + + + + extra-google-m2repository + + + + + + + + + + diff --git a/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml.meta b/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml.meta new file mode 100644 index 00000000..6493d604 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 938014c9994164100b26d82840a88fbb +labels: +- gvh +- gvh_version-1.0.4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml b/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml new file mode 100644 index 00000000..1ef90349 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml @@ -0,0 +1,11 @@ + + + + + + + Assets/GoogleSignIn/Editor/m2repository + + + + diff --git a/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml.meta b/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml.meta new file mode 100644 index 00000000..578e49d5 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e8689106c65f445c19cec6044d615c19 +labels: +- gvh +- gvh_version-1.0.4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt b/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt new file mode 100644 index 00000000..a0e24547 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt @@ -0,0 +1,33 @@ +Assets/PlayServicesResolver/Editor/Google.VersionHandlerImpl_v1.2.89.0.dll +Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.89.0.dll +Assets/PlayServicesResolver/Editor/Google.VersionHandler.dll +Assets/PlayServicesResolver/Editor/Google.JarResolver_v1.2.89.0.dll +Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm +Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.h +Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.h +Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm +Assets/Parse/LICENSE +Assets/Parse/Plugins/Unity.Compat.dll +Assets/Parse/Plugins/Unity.Tasks.dll +Assets/SignInSample/MainScene.unity +Assets/SignInSample/SigninSampleScript.cs +Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs +Assets/GoogleSignIn/Impl/SignInHelperObject.cs +Assets/GoogleSignIn/Impl/NativeFuture.cs +Assets/GoogleSignIn/Impl/BaseObject.cs +Assets/GoogleSignIn/GoogleSignIn.cs +Assets/GoogleSignIn/GoogleSignInConfiguration.cs +Assets/GoogleSignIn/Future.cs +Assets/GoogleSignIn/GoogleSignInUser.cs +Assets/GoogleSignIn/GoogleSignInStatusCode.cs +Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml +Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5 diff --git a/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt.meta b/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt.meta new file mode 100644 index 00000000..eb7a5d66 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a67d5f0cfc09749e6b1ce13e8b8e6e1d +labels: +- gvh +- gvh_manifest +- gvh_version-1.0.4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository.meta b/Assets/GoogleSignIn/Editor/m2repository.meta new file mode 100644 index 00000000..26cfc222 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: eefc3dc8b56e545998952bd59ab36247 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com.meta b/Assets/GoogleSignIn/Editor/m2repository/com.meta new file mode 100644 index 00000000..9372f2b8 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ade49ef91c70440a0baeac322ecaa2d7 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google.meta new file mode 100644 index 00000000..a1cf31a7 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 707de6ade212a46b1ab4bf4d42325176 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin.meta new file mode 100644 index 00000000..4a56a312 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 34b86fc2e934d482ea5f9d1f5354b0f9 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support.meta new file mode 100644 index 00000000..1132fbfe --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e3becceb8680148d59e5bb93e5eb5a24 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4.meta new file mode 100644 index 00000000..27236f59 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 001a15402063b4df983ba8bc4ddb269f +folderAsset: yes +timeCreated: 1537405253 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom new file mode 100644 index 00000000..ce320d07 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + com.google.signin + google-signin-support + 1.0.4 + srcaar + diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5 new file mode 100644 index 00000000..a6bc0c50 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5 @@ -0,0 +1 @@ +7cd48eaf454469c04dae63043d467d69 \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5.meta new file mode 100644 index 00000000..8209b096 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 907bf7a19cd7848cabf1f641f61343ee +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.meta new file mode 100644 index 00000000..94612747 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a3f74b3d329a24e81a6c6f9f1d2f46f1 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1 new file mode 100644 index 00000000..8721bf36 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1 @@ -0,0 +1 @@ +f30d09407a5b0e439bfc0e54e33f3a34f7c7d35c \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1.meta new file mode 100644 index 00000000..df944c49 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e1a3ff77f802d43818521ff3db2bf944 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar new file mode 100644 index 00000000..1ebd5a13 Binary files /dev/null and b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar differ diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5 new file mode 100644 index 00000000..f7df30ce --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5 @@ -0,0 +1 @@ +040097cf545e84135c0e4d783e3b1143 \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5.meta new file mode 100644 index 00000000..ee2f55dd --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 79f9d122dd99b483282294f3b1f1bd36 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.meta new file mode 100644 index 00000000..4ae20ba3 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6eab7a3cbdbf34cffaf951dc9210a32c +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1 new file mode 100644 index 00000000..db669bff --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1 @@ -0,0 +1 @@ +632874f93336b4f05e15f55b63656dace924fa72 \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1.meta new file mode 100644 index 00000000..124743a3 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d508eb0e16bb14c8a962b343e755ef01 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml new file mode 100644 index 00000000..c3049afe --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml @@ -0,0 +1,12 @@ + + + com.google.signin + google-signin-support + + 1.0.4 + + 1.0.4 + + 20180920010048 + + diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5 new file mode 100644 index 00000000..77f39ed2 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5 @@ -0,0 +1 @@ +e243363a85b4f7bd1170918ba674061b \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5.meta new file mode 100644 index 00000000..49e3156c --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c020582c1a85d47c7934908f00a0bd37 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.meta new file mode 100644 index 00000000..1236df6d --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f3911d467587242978192a8723c68395 +labels: +- gvh +- gvh_version-1.0.4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1 new file mode 100644 index 00000000..e1c0999f --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1 @@ -0,0 +1 @@ +43ebede449c3782df517a7156c18c28cde4fd4f4 \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1.meta new file mode 100644 index 00000000..63dc4be7 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 16b8065a143bb4277af08381a56157dd +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Future.cs b/Assets/GoogleSignIn/Future.cs new file mode 100644 index 00000000..df469423 --- /dev/null +++ b/Assets/GoogleSignIn/Future.cs @@ -0,0 +1,84 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +namespace Google { + using System.Collections; + using System.Threading.Tasks; + using UnityEngine; + + /// + /// Interface for implementations of the Future API. + /// + internal interface FutureAPIImpl { + bool Pending { get; } + GoogleSignInStatusCode Status { get; } + T Result { get; } + } + + /// + /// Future return value. + /// + /// This class provides a promise of a result from a method call. + /// The typical usage is to check the Pending property until it is false. + /// At this time either the Status or Result will be available for use. + /// Result is only set if the operation was successful. + /// As a convience, a coroutine to complete a Task is provided. + /// + public class Future { + + private FutureAPIImpl apiImpl; + + internal Future(FutureAPIImpl impl) { + apiImpl = impl; + } + + /// + /// Gets a value indicating whether this + /// is pending. + /// + /// true if pending; otherwise, false. + public bool Pending { get { return apiImpl.Pending; } } + + /// + /// Gets the status. + /// + /// The status is set when Pending == false. + GoogleSignInStatusCode Status { get { return apiImpl.Status; } } + + /// + /// Gets the result. + /// + /// The result is set when Pending == false and there is no error. + /// + T Result { get { return apiImpl.Result; } } + + /// + /// Waits for result then completes the TaskCompleationSource. + /// + /// The for result. + /// Tcs. + internal IEnumerator WaitForResult(TaskCompletionSource tcs) { + yield return new WaitUntil(() => !Pending); + if (Status == GoogleSignInStatusCode.Canceled) { + tcs.SetCanceled(); + } else if (Status == GoogleSignInStatusCode.Success || + Status == GoogleSignInStatusCode.SuccessCached) { + tcs.SetResult(Result); + } else { + tcs.SetException(new GoogleSignIn.SignInException(Status)); + } + } + } +} \ No newline at end of file diff --git a/Assets/GoogleSignIn/Future.cs.meta b/Assets/GoogleSignIn/Future.cs.meta new file mode 100644 index 00000000..75a7f224 --- /dev/null +++ b/Assets/GoogleSignIn/Future.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ad3b09fb652fb4ff0a68d1966f13160e +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/GoogleSignIn.cs b/Assets/GoogleSignIn/GoogleSignIn.cs new file mode 100644 index 00000000..c59ced72 --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignIn.cs @@ -0,0 +1,202 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google { + using System; + using System.Runtime.Serialization; + using System.Threading.Tasks; + using Google.Impl; + using UnityEngine; + + /// + /// Google sign in API. + /// + /// This class implements the GoogleSignInAPI for Unity. + /// Typical usage is to set the Configuration options as needed, then + /// get the DefaultInstance and call signIn or signInSilently. See + /// the + /// Google Sign-In API documentation for more details. + /// + /// + /// private static readonly GoogleSignInConfiguration configuration = + /// new GoogleSignInConfiguration { + /// WebClientId = "", + /// RequestIdToken = true + /// }; + /// + /// public void OnSignIn() { + /// GoogleSignIn.Configuration = configuration; + /// GoogleSignIn.Configuration.UseGameSignIn = false; + /// GoogleSignIn.Configuration.RequestIdToken = true; + /// GoogleSignIn.DefaultInstance.SignIn().ContinueWith( + /// OnAuthenticationFinished); + /// } + /// + /// + /// + public class GoogleSignIn { + +#if !UNITY_ANDROID && !UNITY_IOS + static GoogleSignIn() { + Debug.LogError("This platform is not supported"); + } +#endif + + private static GoogleSignIn theInstance = null; + private static GoogleSignInConfiguration theConfiguration = null; + private ISignInImpl impl; + + /// The configuration settings for Google Sign-in. + /// The configuration should be set before calling the sign-in + /// methods. Once the configuration is set it cannot be changed. + /// + public static GoogleSignInConfiguration Configuration { + set { + // Can set the configuration until the singleton is created. + if (theInstance == null || theConfiguration == value || theConfiguration == null) { + theConfiguration = value; + } else { + throw new SignInException(GoogleSignInStatusCode.DeveloperError, + "DefaultInstance already created. " + + " Cannot change configuration after creation."); + } + } + + get { + return theConfiguration; + } + } + + /// + /// Singleton instance of this class. + /// + /// The instance. + public static GoogleSignIn DefaultInstance { + get { + if (theInstance == null) { +#if UNITY_ANDROID || UNITY_IOS + theInstance = new GoogleSignIn(new GoogleSignInImpl(Configuration)); +#else + theInstance = new GoogleSignIn(null); + throw new SignInException( + GoogleSignInStatusCode.DeveloperError, + "This platform is not supported by GoogleSignIn"); +#endif + } + return theInstance; + } + } + + internal GoogleSignIn(GoogleSignInImpl impl) { + this.impl = impl; + } + + public void EnableDebugLogging(bool flag) { + impl.EnableDebugLogging(flag); + } + + /// Starts the authentication process. + /// + /// The authenication process is started and may display account picker + /// popups and consent prompts based on the state of authentication and + /// the requested elements. + /// + public Task SignIn() { + var tcs = new TaskCompletionSource(); + SignInHelperObject.Instance.StartCoroutine( + impl.SignIn().WaitForResult(tcs)); + return tcs.Task; + } + + /// Starts the silent authentication process. + /// + /// The authenication process is started and will attempt to sign in without + /// displaying any UI. If this cannot be done, the developer should call + /// SignIn(). + /// + public Task SignInSilently() { + var tcs = new TaskCompletionSource(); + SignInHelperObject.Instance.StartCoroutine( + impl.SignInSilently().WaitForResult(tcs)); + return tcs.Task; + } + + /// + /// Signs out the User. + /// + /// Future sign-in attempts will require the user to select the + /// account to use when signing in. + /// + public void SignOut() { + theConfiguration = null; + impl.SignOut(); + } + + /// + /// Disconnect this instance. + /// + /// When the user is disconnected, it revokes all access that may + /// have been granted to this application. This includes any server side + /// access tokens derived from server auth codes. As a result, future + /// sign-in attempts will require the user to re-consent to the requested + /// scopes. + /// + public void Disconnect() { + impl.Disconnect(); + } + + /// + /// Sign in exception. This is a checked exception for handling specific + /// errors during the sign-in process. + /// + [Serializable] + public class SignInException : Exception { + internal SignInException(GoogleSignInStatusCode status) { + Status = status; + } + + public SignInException(GoogleSignInStatusCode status, string message) : + base(message) { + Status = status; + } + + public SignInException(GoogleSignInStatusCode status, string message, + Exception innerException) : base(message, innerException) { + Status = status; + } + + protected SignInException(GoogleSignInStatusCode status, + SerializationInfo info, + StreamingContext context) : + base(info, context) { + Status = status; + } + + public GoogleSignInStatusCode Status { + get; + internal set; + } + } + } + + internal interface ISignInImpl { + Future SignIn(); + Future SignInSilently(); + void EnableDebugLogging(bool flag); + void SignOut(); + void Disconnect(); + } +} // namespace Google diff --git a/Assets/GoogleSignIn/GoogleSignIn.cs.meta b/Assets/GoogleSignIn/GoogleSignIn.cs.meta new file mode 100644 index 00000000..31609ffd --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignIn.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 138b984208e394be797ce8905a44fd54 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/GoogleSignInConfiguration.cs b/Assets/GoogleSignIn/GoogleSignInConfiguration.cs new file mode 100644 index 00000000..d914c68d --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInConfiguration.cs @@ -0,0 +1,63 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google { + using System.Collections.Generic; + + /// + /// Configuration properties for Google Sign-In. + /// + public class GoogleSignInConfiguration { + /// Set to true to use games signin, false for default signin. + /// + /// Note: The Games configuration is not supported on non-Android + /// platforms. + /// If games configuration is used, you must also add the + /// play-services-games libraries and dependencies. + /// See the README for more details. + /// + public bool UseGameSignIn = false; + /// Web client id associated with this app. + /// Required for requesting auth code or id token. + public string WebClientId = null; + /// Set to true for getting an auth code when authenticating. + /// + public bool RequestAuthCode = false; + /// Set to true to request to reset the refresh token. + /// Causes re-consent. + /// + public bool ForceTokenRefresh = false; + /// Request email address, requires consent. + public bool RequestEmail = false; + /// Request id token, requires consent. + public bool RequestIdToken = false; + /// Request profile information, requires consent. + public bool RequestProfile = false; + /// Hides popup UIs from games services. + /// Used with games signin to show or hide the connecting popup UI + /// and to associate an invisible view for other popups. This is + /// recommended for VR applications. This has no effect if UseGameSignIn is + /// false. + /// + public bool HidePopups = false; + /// Account name to use when authenticating, + /// null indicates use default. + public string AccountName = null; + /// Additional scopes to request, requires consent. + public IEnumerable AdditionalScopes = null; + } +} + diff --git a/Assets/GoogleSignIn/GoogleSignInConfiguration.cs.meta b/Assets/GoogleSignIn/GoogleSignInConfiguration.cs.meta new file mode 100644 index 00000000..943644cc --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInConfiguration.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 0c3999c0f68f04ae08f04fb3bf2a2050 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/GoogleSignInStatusCode.cs b/Assets/GoogleSignIn/GoogleSignInStatusCode.cs new file mode 100644 index 00000000..0719f2c2 --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInStatusCode.cs @@ -0,0 +1,72 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google { + + /// + /// Status code for the SignIn operations. + /// + /// All successful status codes are less than or equal to 0. + /// + public enum GoogleSignInStatusCode { + /// The operation was successful, but used the device's cache. + /// + SuccessCached = -1, + + /// The operation was successful. + Success = 0, + + /// The client attempted to call a method from an API that + /// failed to connect. + ApiNotConnected = 1, + + /// The result was canceled either due to client disconnect + /// or cancel(). + Canceled = 2, + + /// A blocking call was interrupted while waiting and did not + /// run to completion. + Interrupted = 3, + + /// The client attempted to connect to the service with an + /// invalid account name specified. + InvalidAccount = 4, + + /// Timed out while awaiting the result. + Timeout = 5, + + /// The application is misconfigured. + /// This error is not recoverable. + /// + /// The developer should look at the logs after this to determine + /// more actionable information. + /// + DeveloperError = 6, + + /// An internal error occurred. Retrying should resolve the + /// problem. + InternalError = 7, + + /// A network error occurred. Retrying should resolve the problem. + /// + NetworkError = 8, + + /// The operation failed with no more detailed information. + /// + Error = 9, + } +} // namespace GoogleSignIn + diff --git a/Assets/GoogleSignIn/GoogleSignInStatusCode.cs.meta b/Assets/GoogleSignIn/GoogleSignInStatusCode.cs.meta new file mode 100644 index 00000000..238e45f5 --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInStatusCode.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 077933fcaedac412d9762bf3e0a3be68 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/GoogleSignInUser.cs b/Assets/GoogleSignIn/GoogleSignInUser.cs new file mode 100644 index 00000000..a3ea8b3f --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInUser.cs @@ -0,0 +1,76 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google { + using System; + + /// Information for the authenticated user. + public class GoogleSignInUser { + + /// Server AuthCode to be exchanged for an auth token. + /// null if not requested, or if there was an error. + public string AuthCode { + get; + internal set; + } + + /// Email address. + /// null if not requested, or if there was an error. + public string Email { + get; + internal set; + } + + /// Id token. + /// null if not requested, or if there was an error. + public string IdToken { + get; + internal set; + } + + /// Display Name. + public string DisplayName { + get; + internal set; + } + + /// Given Name. + public string GivenName { + get; + internal set; + } + + /// Family Name. + public string FamilyName { + get; + internal set; + } + + /// Profile photo + /// Can be null if the profile is not requested, + /// or none set. + public Uri ImageUrl { + get; + internal set; + } + + /// User ID + public string UserId { + get; + internal set; + } + } +} diff --git a/Assets/GoogleSignIn/GoogleSignInUser.cs.meta b/Assets/GoogleSignIn/GoogleSignInUser.cs.meta new file mode 100644 index 00000000..587c6861 --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInUser.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: c56b92217d0144af5907627d1235e0a5 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl.meta b/Assets/GoogleSignIn/Impl.meta new file mode 100644 index 00000000..de5f17f2 --- /dev/null +++ b/Assets/GoogleSignIn/Impl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2fbe4f3ec9db4415e849f9bb89e63a92 +folderAsset: yes +timeCreated: 1502761839 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl/BaseObject.cs b/Assets/GoogleSignIn/Impl/BaseObject.cs new file mode 100644 index 00000000..44d65013 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/BaseObject.cs @@ -0,0 +1,70 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google.Impl { + using System; + using System.Runtime.InteropServices; + using System.Text; + using UnityEngine; + + /// + /// Base object manages the pointer to a native object which provides the + /// implementation of a C# object. + /// + internal abstract class BaseObject : IDisposable { + // handle to native object. + private HandleRef selfHandleRef; + private static HandleRef nullSelf = new HandleRef(); + + public BaseObject(IntPtr intPtr) { + selfHandleRef = new HandleRef(this, intPtr); + } + + protected HandleRef SelfPtr() { + if (selfHandleRef.Equals(nullSelf)) { + throw new InvalidOperationException( + "Attempted to use object after it was cleaned up"); + } + return selfHandleRef; + } + + public virtual void Dispose() { + selfHandleRef = nullSelf; + } + + internal delegate UIntPtr OutStringMethod([In, Out] byte[] out_bytes, + UIntPtr out_size); + + internal static String OutParamsToString(OutStringMethod outStringMethod) { + UIntPtr requiredSize = outStringMethod(null, UIntPtr.Zero); + if (requiredSize.Equals(UIntPtr.Zero)) { + return null; + } + + string str = null; + try { + byte[] array = new byte[requiredSize.ToUInt32()]; + outStringMethod(array, requiredSize); + str = Encoding.UTF8.GetString(array, 0, + (int)requiredSize.ToUInt32() - 1); + } catch (Exception e) { + Debug.LogError("Exception creating string from char array: " + e); + str = string.Empty; + } + return str; + } + } +} diff --git a/Assets/GoogleSignIn/Impl/BaseObject.cs.meta b/Assets/GoogleSignIn/Impl/BaseObject.cs.meta new file mode 100644 index 00000000..0e24225d --- /dev/null +++ b/Assets/GoogleSignIn/Impl/BaseObject.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: fe250cda690a44cb08f8f7d26c9723b4 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs b/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs new file mode 100644 index 00000000..78c8081f --- /dev/null +++ b/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs @@ -0,0 +1,187 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google.Impl { + using System; + using System.Collections.Generic; + using System.Runtime.InteropServices; + + internal class GoogleSignInImpl : BaseObject, ISignInImpl { + +#if UNITY_ANDROID + private const string DllName = "native-googlesignin"; +#else + private const string DllName = "__Internal"; +#endif + + internal GoogleSignInImpl(GoogleSignInConfiguration configuration) + : base(GoogleSignIn_Create(GetPlayerActivity())) { + + if (configuration != null) { + List scopes = new List(); + if (configuration.AdditionalScopes != null) { + scopes.AddRange(configuration.AdditionalScopes); + } + GoogleSignIn_Configure(SelfPtr(), configuration.UseGameSignIn, + configuration.WebClientId, + configuration.RequestAuthCode, + configuration.ForceTokenRefresh, + configuration.RequestEmail, + configuration.RequestIdToken, + configuration.HidePopups, + scopes.ToArray(), + scopes.Count, + configuration.AccountName); + } + } + + /// Enables/Disables verbose logging to help troubleshooting + public void EnableDebugLogging(bool flag) { + GoogleSignIn_EnableDebugLogging(SelfPtr(), flag); + } + + /// + /// Starts the authentication process. + /// + /// + /// The authenication process is started and may display account picker + /// popups and consent prompts based on the state of authentication and + /// the requested elements. + /// + public Future SignIn() { + IntPtr nativeFuture = GoogleSignIn_SignIn(SelfPtr()); + return new Future(new NativeFuture(nativeFuture)); + } + + /// + /// Starts the authentication process. + /// + /// + /// The authenication process is started and may display account picker + /// popups and consent prompts based on the state of authentication and + /// the requested elements. + /// + public Future SignInSilently() { + IntPtr nativeFuture = GoogleSignIn_SignInSilently(SelfPtr()); + return new Future(new NativeFuture(nativeFuture)); + } + + /// + /// Signs out the User. + /// + public void SignOut() { + GoogleSignIn_Signout(SelfPtr()); + } + + /// + /// Disconnects the user from the application and revokes all consent. + /// + public void Disconnect() { + GoogleSignIn_Disconnect(SelfPtr()); + } + + /// + /// Creates an instance of the native Google Sign-In implementation. + /// + /// + /// For Android this must be the JNI raw object for the parentActivity. + /// For iOS it is ignored. + /// + /// The pointer to the instance. + /// Data used in creating the instance. + [DllImport(DllName)] + static extern IntPtr GoogleSignIn_Create(IntPtr data); + + [DllImport(DllName)] + static extern void GoogleSignIn_EnableDebugLogging(HandleRef self, bool flag); + + [DllImport(DllName)] + static extern bool GoogleSignIn_Configure(HandleRef self, + bool useGameSignIn, string webClientId, + bool requestAuthCode, bool forceTokenRefresh, bool requestEmail, + bool requestIdToken, bool hidePopups, string[] additionalScopes, + int scopeCount, string accountName); + + [DllImport(DllName)] + static extern IntPtr GoogleSignIn_SignIn(HandleRef self); + + [DllImport(DllName)] + static extern IntPtr GoogleSignIn_SignInSilently(HandleRef self); + + [DllImport(DllName)] + static extern void GoogleSignIn_Signout(HandleRef self); + + [DllImport(DllName)] + static extern void GoogleSignIn_Disconnect(HandleRef self); + + [DllImport(DllName)] + internal static extern void GoogleSignIn_DisposeFuture(HandleRef self); + + [DllImport(DllName)] + internal static extern bool GoogleSignIn_Pending(HandleRef self); + + [DllImport(DllName)] + internal static extern IntPtr GoogleSignIn_Result(HandleRef self); + + [DllImport(DllName)] + internal static extern int GoogleSignIn_Status(HandleRef self); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetServerAuthCode( + HandleRef self, [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetDisplayName(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetEmail(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetFamilyName(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetGivenName(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetIdToken(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetImageUrl(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetUserId(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + // Gets the Unity player activity. + // For iOS, this returns Zero. + private static IntPtr GetPlayerActivity() { +#if UNITY_ANDROID + UnityEngine.AndroidJavaClass jc = new UnityEngine.AndroidJavaClass( + "com.unity3d.player.UnityPlayer"); + return jc.GetStatic("currentActivity") + .GetRawObject(); +#else + return IntPtr.Zero; +#endif + } + } +} diff --git a/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs.meta b/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs.meta new file mode 100644 index 00000000..46c1d561 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 9ae1f008f9f994b9c96c1a14067d7b48 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl/NativeFuture.cs b/Assets/GoogleSignIn/Impl/NativeFuture.cs new file mode 100644 index 00000000..6d460f22 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/NativeFuture.cs @@ -0,0 +1,102 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google.Impl { + using System; + using System.Runtime.InteropServices; + + /// + /// Native future is an interal class that implements the FutureAPIImpl + /// by calling native methods which are implemented in the native code. + /// + internal class NativeFuture : BaseObject, FutureAPIImpl { + + internal NativeFuture(IntPtr ptr) : base(ptr) { + } + + public override void Dispose() { + GoogleSignInImpl.GoogleSignIn_DisposeFuture(SelfPtr()); + base.Dispose(); + } + + public bool Pending { + get { + return GoogleSignInImpl.GoogleSignIn_Pending(SelfPtr()); + } + } + + public GoogleSignInUser Result { + get { + IntPtr ptr = GoogleSignInImpl.GoogleSignIn_Result(SelfPtr()); + if (ptr != IntPtr.Zero) { + GoogleSignInUser user = new GoogleSignInUser(); + HandleRef userPtr = new HandleRef(user, ptr); + + user.DisplayName = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetDisplayName(userPtr, + out_string, + out_size)); + user.Email = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetEmail(userPtr, out_string, + out_size)); + + user.FamilyName = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetFamilyName(userPtr, out_string, + out_size)); + + user.GivenName = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetGivenName(userPtr, out_string, + out_size)); + + user.IdToken = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetIdToken(userPtr, out_string, + out_size)); + + user.AuthCode = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetServerAuthCode(userPtr, out_string, + out_size)); + + string url = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetImageUrl(userPtr, out_string, + out_size)); + if (url.Length > 0) { + user.ImageUrl = new System.Uri(url); + } + + user.UserId = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetUserId(userPtr, out_string, + out_size)); + return user; + } else { + return null; + } + } + } + + /// + /// Gets the status. + /// + /// The platform specific implementation maps the platform specific + /// code to one defined in GoogleSignStatusCode. + /// The status. + public GoogleSignInStatusCode Status { + get { + return (GoogleSignInStatusCode)GoogleSignInImpl.GoogleSignIn_Status( + SelfPtr()); + } + } + } +} diff --git a/Assets/GoogleSignIn/Impl/NativeFuture.cs.meta b/Assets/GoogleSignIn/Impl/NativeFuture.cs.meta new file mode 100644 index 00000000..0cb0bd1b --- /dev/null +++ b/Assets/GoogleSignIn/Impl/NativeFuture.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 5f1aae79b1ca4432d9d8ec382c54bf46 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl/SignInHelperObject.cs b/Assets/GoogleSignIn/Impl/SignInHelperObject.cs new file mode 100644 index 00000000..6fbf3fe0 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/SignInHelperObject.cs @@ -0,0 +1,42 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +namespace Google.Impl { + using UnityEngine; + + ///Helper object to connect the Sign-in API to the Unity Game Scene. + /// + ///This class is added to the scene so that the Google Sign-in API + /// can start coroutines. + /// + public class SignInHelperObject : MonoBehaviour { + + private static SignInHelperObject instance; + + internal static SignInHelperObject Instance { + get { + if (Application.isPlaying) { + // add an invisible game object to the scene + GameObject obj = new GameObject("GoogleSignInHelperObject"); + DontDestroyOnLoad(obj); + instance = obj.AddComponent(); + } else { + instance = new SignInHelperObject(); + } + return instance; + } + } + } +} diff --git a/Assets/GoogleSignIn/Impl/SignInHelperObject.cs.meta b/Assets/GoogleSignIn/Impl/SignInHelperObject.cs.meta new file mode 100644 index 00000000..2dd5652c --- /dev/null +++ b/Assets/GoogleSignIn/Impl/SignInHelperObject.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ad98e5b48888e44eb81dd5884d3a1754 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: