Skip to content

Commit

Permalink
add log with INTERNAL_ERROR
Browse files Browse the repository at this point in the history
Log more exception
fill logic with condition
  • Loading branch information
Thaina committed Jan 25, 2025
1 parent f7eab29 commit cf16008
Show file tree
Hide file tree
Showing 3 changed files with 518 additions and 501 deletions.
19 changes: 13 additions & 6 deletions GoogleSignIn/Impl/GoogleSignInImpl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -187,19 +187,26 @@ static void GoogleSignIn_Signout(HandleRef self)
internal static IntPtr GoogleSignIn_Result(HandleRef self) => googleIdTokenCredential.GetRawObject();

internal static int GoogleSignIn_Status(HandleRef self) => GoogleSignInHelper.CallStatic<int>("getStatus");

internal static string GoogleSignIn_GetServerAuthCode(HandleRef self) => authorizationResult?.Call<string>("getServerAuthCode");

internal static string GoogleSignIn_GetUserId(HandleRef self)
{
try
{
var idTokenPart = googleIdTokenCredential?.Call<string>("getIdToken")?.Split('.')?.ElementAtOrDefault(1);
if(!(idTokenPart?.Length is int length && length > 1))
string idToken = googleIdTokenCredential?.Call<string>("getIdToken");
string idTokenPart = idToken?.Split('.')?.ElementAtOrDefault(1);
if(!(idTokenPart?.Length > 1))
return null;

string fill = new string('=',(4 - (idTokenPart.Length % 4)) % 4);
var jobj = Newtonsoft.Json.Linq.JObject.Parse(Encoding.UTF8.GetString(Convert.FromBase64String(idTokenPart + fill)));
// Replace URL-safe characters and fix padding
idTokenPart = idTokenPart.Replace('-', '+').Replace('_', '/');
int mod = idTokenPart.Length % 4;
if(mod > 0)
idTokenPart += new string('=',4 - mod);
var idTokenFromBase64 = Convert.FromBase64String(idTokenPart);
var idToken = Encoding.UTF8.GetString(idTokenFromBase64);
var jobj = Newtonsoft.Json.Linq.JObject.Parse(idToken);
return jobj?["sub"]?.ToString();
}
catch(Exception e)
Expand Down Expand Up @@ -293,7 +300,7 @@ internal static extern UIntPtr GoogleSignIn_GetServerAuthCode(

[DllImport(DllName)]
internal static extern UIntPtr GoogleSignIn_GetUserId(HandleRef self, [In, Out] byte[] bytes, UIntPtr len);

internal static string GoogleSignIn_GetServerAuthCode(HandleRef self) =>
OutParamsToString((out_string, out_size) => GoogleSignIn_GetServerAuthCode(self, out_string, out_size));

Expand Down
Loading

0 comments on commit cf16008

Please sign in to comment.