From b2cf8c6d3df3ebe792c4b3932f05ddfc7f477959 Mon Sep 17 00:00:00 2001 From: Zsika Phillip Date: Fri, 20 Apr 2018 18:58:23 -0700 Subject: Fixes base64URL encoding (#1161) * Fixes base64URL encoding * Addresses comments * Addresses comment --- Firebase/Auth/Source/FIRUser.m | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'Firebase/Auth') diff --git a/Firebase/Auth/Source/FIRUser.m b/Firebase/Auth/Source/FIRUser.m index 8dc5739..ea48267 100644 --- a/Firebase/Auth/Source/FIRUser.m +++ b/Firebase/Auth/Source/FIRUser.m @@ -845,8 +845,18 @@ static void callInMainThreadWithAuthDataResultAndError( - (FIRAuthTokenResult *)parseIDToken:(NSString *)token error:(NSError **)error { *error = nil; NSArray *tokenStringArray = [token componentsSeparatedByString:@"."]; + // The token payload is always the second index of the array. - NSMutableString *tokenPayload = [[NSMutableString alloc] initWithString:tokenStringArray[1]]; + NSString *idToken = tokenStringArray[1]; + + // Convert the base64URL encoded string to a base64 encoded string. + // Replace "_" with "/" + NSMutableString *tokenPayload = + [[idToken stringByReplacingOccurrencesOfString:@"_" withString:@"/"] mutableCopy]; + + // Replace "-" with "+" + tokenPayload = + [[tokenPayload stringByReplacingOccurrencesOfString:@"-" withString:@"+"] mutableCopy]; // Pad the token payload with "=" signs if the payload's length is not a multiple of 4. while ((tokenPayload.length % 4) != 0) { -- cgit v1.2.3