From ae1ba1812f54f4c2695715bccaad031f0e36e884 Mon Sep 17 00:00:00 2001 From: Sumanta Paudel Date: Fri, 9 Feb 2024 09:34:36 +0545 Subject: [PATCH 1/2] Added Email Scope --- gpgs/src/gpgs_extension.cpp | 18 ++++++++++++++---- gpgs/src/java/com/defold/gpgs/GpgsJNI.java | 14 +++++++++++++- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/gpgs/src/gpgs_extension.cpp b/gpgs/src/gpgs_extension.cpp index 796f117..6604a71 100644 --- a/gpgs/src/gpgs_extension.cpp +++ b/gpgs/src/gpgs_extension.cpp @@ -28,6 +28,7 @@ struct GPGS jmethodID m_isLoggedIn; jmethodID m_setGravityForPopups; jmethodID m_isSupported; + jmethodID m_getEmail; }; struct GPGS_Disk @@ -302,6 +303,11 @@ static int GpgsAuth_getId(lua_State* L) return CallStringMethod(L, g_gpgs.m_GpgsJNI, g_gpgs.m_getId); } +static int GpgsAuth_getEmail(lua_State* L) +{ + return CallStringMethod(L, g_gpgs.m_GpgsJNI,g_gpgs.m_getEmail); +} + static int GpgsAuth_getIdToken(lua_State* L) { return CallStringMethod(L, g_gpgs.m_GpgsJNI, g_gpgs.m_getIdToken); @@ -757,6 +763,7 @@ static const luaL_reg Gpgs_methods[] = {"get_id", GpgsAuth_getId}, {"get_id_token", GpgsAuth_getIdToken}, {"get_server_auth_code", GpgsAuth_getServerAuthCode}, + {"get_email", GpgsAuth_getEmail}, {"is_logged_in", GpgsAuth_isLoggedIn}, {"set_popup_position", GpgsAuth_setGravityForPopups}, {"set_callback", Gpg_set_callback}, @@ -877,6 +884,7 @@ static void InitJNIMethods(JNIEnv* env, jclass cls) g_gpgs.m_getId = env->GetMethodID(cls, "getId", "()Ljava/lang/String;"); g_gpgs.m_getIdToken = env->GetMethodID(cls, "getIdToken", "()Ljava/lang/String;"); g_gpgs.m_getServerAuthCode = env->GetMethodID(cls, "getServerAuthCode", "()Ljava/lang/String;"); + g_gpgs.m_getEmail = env->GetMethodID(cls,"getEmail","()Ljava/lang/String;"); g_gpgs.m_setGravityForPopups = env->GetMethodID(cls, "setGravityForPopups", "(I)V"); //disk @@ -934,7 +942,7 @@ static void CheckInitializationParams(const char* client_id, bool request_server } -static void InitializeJNI(const char* client_id, bool request_server_auth_code, bool request_id_token) +static void InitializeJNI(const char* client_id, bool request_server_auth_code, bool request_id_token, bool request_email) { CheckInitializationParams(client_id, request_server_auth_code > 0, request_id_token > 0); @@ -944,11 +952,11 @@ static void InitializeJNI(const char* client_id, bool request_server_auth_code, InitJNIMethods(env, cls); - jmethodID jni_constructor = env->GetMethodID(cls, "", "(Landroid/app/Activity;ZZZLjava/lang/String;)V"); + jmethodID jni_constructor = env->GetMethodID(cls, "", "(Landroid/app/Activity;ZZZZLjava/lang/String;)V"); jstring java_client_id = env->NewStringUTF(client_id); g_gpgs.m_GpgsJNI = env->NewGlobalRef(env->NewObject(cls, jni_constructor, threadAttacher.GetActivity()->clazz, - g_gpgs_disk.is_using, request_server_auth_code, request_id_token, java_client_id)); + g_gpgs_disk.is_using, request_server_auth_code, request_id_token, request_email, java_client_id)); env->DeleteLocalRef(java_client_id); } @@ -962,10 +970,12 @@ static dmExtension::Result InitializeGpgs(dmExtension::Params* params) int request_server_auth_code = dmConfigFile::GetInt(params->m_ConfigFile, "gpgs.request_server_auth_code", 0); int request_id_token = dmConfigFile::GetInt(params->m_ConfigFile, "gpgs.request_id_token", 0); + int request_email = dmConfigFile::GetInt(params->m_ConfigFile, "gpgs.request_email", 0); + dmLogInfo("Request Email: ", request_email) const char* client_id = dmConfigFile::GetString(params->m_ConfigFile, "gpgs.client_id", 0); - InitializeJNI(client_id, request_server_auth_code > 0, request_id_token > 0); + InitializeJNI(client_id, request_server_auth_code > 0, request_id_token > 0, request_email > 0); dmAndroid::RegisterOnActivityResultListener(OnActivityResult); gpgs_callback_initialize(); return dmExtension::RESULT_OK; diff --git a/gpgs/src/java/com/defold/gpgs/GpgsJNI.java b/gpgs/src/java/com/defold/gpgs/GpgsJNI.java index e75dd36..800d6a0 100644 --- a/gpgs/src/java/com/defold/gpgs/GpgsJNI.java +++ b/gpgs/src/java/com/defold/gpgs/GpgsJNI.java @@ -101,6 +101,7 @@ public class GpgsJNI { private String client_id; private boolean is_request_id_token; private boolean is_request_auth_code; + private boolean is_request_email; private boolean is_supported; //-------------------------------------------------- @@ -197,12 +198,13 @@ private void sendFailedMessage(int msg, String error_text, Exception e) { } } - public GpgsJNI(Activity activity, boolean is_disk_active, boolean is_request_auth_code, boolean is_request_id_token, String client_id) { + public GpgsJNI(Activity activity, boolean is_disk_active, boolean is_request_auth_code, boolean is_request_id_token, boolean is_request_email, String client_id) { this.activity = activity; this.is_disk_active = is_disk_active; this.client_id = client_id; this.is_request_auth_code = is_request_auth_code; this.is_request_id_token = is_request_id_token; + this.is_request_email = is_request_email; this.is_supported = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(activity) == ConnectionResult.SUCCESS; @@ -252,6 +254,12 @@ private GoogleSignInOptions getSignInOptions() { builder.requestServerAuthCode(client_id); } + if (is_request_email) { + builder.requestEmail(); + } + + builder.requestProfile(); + mSignInOptions = builder.build(); } @@ -337,6 +345,10 @@ public String getId() { return isLoggedIn() ? mPlayer.getPlayerId() : null; } + public String getEmail() { + return isLoggedIn() ? mSignedInAccount.getEmail() : null; + } + public String getIdToken() { return isLoggedIn() ? mSignedInAccount.getIdToken() : null; } From fead73a2e49a6109f0e0f859a53152f4d37ca545 Mon Sep 17 00:00:00 2001 From: Sumanta Paudel Date: Fri, 9 Feb 2024 14:22:01 +0545 Subject: [PATCH 2/2] Added Profile Scope --- gpgs/src/gpgs_extension.cpp | 20 ++++++++++----- gpgs/src/java/com/defold/gpgs/GpgsJNI.java | 30 +++++++++++++++++++--- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/gpgs/src/gpgs_extension.cpp b/gpgs/src/gpgs_extension.cpp index 6604a71..d97fbea 100644 --- a/gpgs/src/gpgs_extension.cpp +++ b/gpgs/src/gpgs_extension.cpp @@ -25,10 +25,11 @@ struct GPGS jmethodID m_getId; jmethodID m_getIdToken; jmethodID m_getServerAuthCode; + jmethodID m_getEmail; + jmethodID m_getProfile; jmethodID m_isLoggedIn; jmethodID m_setGravityForPopups; jmethodID m_isSupported; - jmethodID m_getEmail; }; struct GPGS_Disk @@ -308,6 +309,11 @@ static int GpgsAuth_getEmail(lua_State* L) return CallStringMethod(L, g_gpgs.m_GpgsJNI,g_gpgs.m_getEmail); } +static int GpgsAuth_getProfile(lua_State* L) +{ + return CallStringMethod(L, g_gpgs.m_GpgsJNI,g_gpgs.m_getProfile); +} + static int GpgsAuth_getIdToken(lua_State* L) { return CallStringMethod(L, g_gpgs.m_GpgsJNI, g_gpgs.m_getIdToken); @@ -764,6 +770,7 @@ static const luaL_reg Gpgs_methods[] = {"get_id_token", GpgsAuth_getIdToken}, {"get_server_auth_code", GpgsAuth_getServerAuthCode}, {"get_email", GpgsAuth_getEmail}, + {"get_profile", GpgsAuth_getProfile}, {"is_logged_in", GpgsAuth_isLoggedIn}, {"set_popup_position", GpgsAuth_setGravityForPopups}, {"set_callback", Gpg_set_callback}, @@ -885,6 +892,7 @@ static void InitJNIMethods(JNIEnv* env, jclass cls) g_gpgs.m_getIdToken = env->GetMethodID(cls, "getIdToken", "()Ljava/lang/String;"); g_gpgs.m_getServerAuthCode = env->GetMethodID(cls, "getServerAuthCode", "()Ljava/lang/String;"); g_gpgs.m_getEmail = env->GetMethodID(cls,"getEmail","()Ljava/lang/String;"); + g_gpgs.m_getProfile = env->GetMethodID(cls,"getProfile","()Ljava/lang/String;"); g_gpgs.m_setGravityForPopups = env->GetMethodID(cls, "setGravityForPopups", "(I)V"); //disk @@ -942,7 +950,7 @@ static void CheckInitializationParams(const char* client_id, bool request_server } -static void InitializeJNI(const char* client_id, bool request_server_auth_code, bool request_id_token, bool request_email) +static void InitializeJNI(const char* client_id, bool request_server_auth_code, bool request_id_token, bool request_email, bool request_profile) { CheckInitializationParams(client_id, request_server_auth_code > 0, request_id_token > 0); @@ -952,11 +960,11 @@ static void InitializeJNI(const char* client_id, bool request_server_auth_code, InitJNIMethods(env, cls); - jmethodID jni_constructor = env->GetMethodID(cls, "", "(Landroid/app/Activity;ZZZZLjava/lang/String;)V"); + jmethodID jni_constructor = env->GetMethodID(cls, "", "(Landroid/app/Activity;ZZZZZLjava/lang/String;)V"); jstring java_client_id = env->NewStringUTF(client_id); g_gpgs.m_GpgsJNI = env->NewGlobalRef(env->NewObject(cls, jni_constructor, threadAttacher.GetActivity()->clazz, - g_gpgs_disk.is_using, request_server_auth_code, request_id_token, request_email, java_client_id)); + g_gpgs_disk.is_using, request_server_auth_code, request_id_token, request_email, request_profile, java_client_id)); env->DeleteLocalRef(java_client_id); } @@ -971,11 +979,11 @@ static dmExtension::Result InitializeGpgs(dmExtension::Params* params) int request_server_auth_code = dmConfigFile::GetInt(params->m_ConfigFile, "gpgs.request_server_auth_code", 0); int request_id_token = dmConfigFile::GetInt(params->m_ConfigFile, "gpgs.request_id_token", 0); int request_email = dmConfigFile::GetInt(params->m_ConfigFile, "gpgs.request_email", 0); - dmLogInfo("Request Email: ", request_email) + int request_profile = dmConfigFile::GetInt(params->m_ConfigFile, "gpgs.request_profile", 0); const char* client_id = dmConfigFile::GetString(params->m_ConfigFile, "gpgs.client_id", 0); - InitializeJNI(client_id, request_server_auth_code > 0, request_id_token > 0, request_email > 0); + InitializeJNI(client_id, request_server_auth_code > 0, request_id_token > 0, request_email > 0, request_profile > 0); dmAndroid::RegisterOnActivityResultListener(OnActivityResult); gpgs_callback_initialize(); return dmExtension::RESULT_OK; diff --git a/gpgs/src/java/com/defold/gpgs/GpgsJNI.java b/gpgs/src/java/com/defold/gpgs/GpgsJNI.java index 800d6a0..0d89261 100644 --- a/gpgs/src/java/com/defold/gpgs/GpgsJNI.java +++ b/gpgs/src/java/com/defold/gpgs/GpgsJNI.java @@ -102,6 +102,7 @@ public class GpgsJNI { private boolean is_request_id_token; private boolean is_request_auth_code; private boolean is_request_email; + private boolean is_request_profile; private boolean is_supported; //-------------------------------------------------- @@ -198,13 +199,14 @@ private void sendFailedMessage(int msg, String error_text, Exception e) { } } - public GpgsJNI(Activity activity, boolean is_disk_active, boolean is_request_auth_code, boolean is_request_id_token, boolean is_request_email, String client_id) { + public GpgsJNI(Activity activity, boolean is_disk_active, boolean is_request_auth_code, boolean is_request_id_token, boolean is_request_email, boolean is_request_profile, String client_id) { this.activity = activity; this.is_disk_active = is_disk_active; this.client_id = client_id; this.is_request_auth_code = is_request_auth_code; this.is_request_id_token = is_request_id_token; this.is_request_email = is_request_email; + this.is_request_profile = is_request_profile; this.is_supported = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(activity) == ConnectionResult.SUCCESS; @@ -257,8 +259,11 @@ private GoogleSignInOptions getSignInOptions() { if (is_request_email) { builder.requestEmail(); } - - builder.requestProfile(); + + if (is_request_profile) + { + builder.requestProfile(); + } mSignInOptions = builder.build(); } @@ -266,6 +271,21 @@ private GoogleSignInOptions getSignInOptions() { return mSignInOptions; } + private String profileToJsonString() throws JSONException { + JSONObject profile = new JSONObject(); + + profile.put("name",mSignedInAccount.getDisplayName()); + profile.put("given_name",mSignedInAccount.getGivenName()); + profile.put("family_name",mSignedInAccount.getFamilyName()); + profile.put("photo_url",mSignedInAccount.getPhotoUrl()); + profile.put("id",mSignedInAccount.getId()); + + String profileText = profile.toString(); + + return profileText; + + } + public void activityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == RC_SIGN_IN) { if (intent != null) { @@ -349,6 +369,10 @@ public String getEmail() { return isLoggedIn() ? mSignedInAccount.getEmail() : null; } + public String getProfile() throws JSONException{ + return isLoggedIn() ? profileToJsonString() : null; + } + public String getIdToken() { return isLoggedIn() ? mSignedInAccount.getIdToken() : null; }