diff --git a/.changeset/appauth-registration-response.md b/.changeset/appauth-registration-response.md new file mode 100644 index 000000000..50b96a433 --- /dev/null +++ b/.changeset/appauth-registration-response.md @@ -0,0 +1,5 @@ +--- +"react-native-app-auth": patch +--- + +Convert Android dynamic-registration epoch seconds to milliseconds before date formatting. Return the iOS registrationClientUri as its absolute URL string rather than an NSURL object that cannot cross the JSON bridge. diff --git a/packages/react-native-app-auth/android/src/main/java/com/rnappauth/utils/RegistrationResponseFactory.java b/packages/react-native-app-auth/android/src/main/java/com/rnappauth/utils/RegistrationResponseFactory.java index 778f5e239..38ce5a9b0 100644 --- a/packages/react-native-app-auth/android/src/main/java/com/rnappauth/utils/RegistrationResponseFactory.java +++ b/packages/react-native-app-auth/android/src/main/java/com/rnappauth/utils/RegistrationResponseFactory.java @@ -5,6 +5,8 @@ import net.openid.appauth.RegistrationResponse; +import java.util.concurrent.TimeUnit; + public final class RegistrationResponseFactory { /* * Read raw registration response into a React Native map to be passed down the bridge @@ -16,7 +18,7 @@ public static final WritableMap registrationResponseToMap(RegistrationResponse r map.putMap("additionalParameters", MapUtil.createAdditionalParametersMap(response.additionalParameters)); if (response.clientIdIssuedAt != null) { - map.putString("clientIdIssuedAt", DateUtil.formatTimestamp(response.clientIdIssuedAt)); + map.putString("clientIdIssuedAt", DateUtil.formatTimestamp(TimeUnit.SECONDS.toMillis(response.clientIdIssuedAt))); } if (response.clientSecret != null) { @@ -24,7 +26,7 @@ public static final WritableMap registrationResponseToMap(RegistrationResponse r } if (response.clientSecretExpiresAt != null) { - map.putString("clientSecretExpiresAt", DateUtil.formatTimestamp(response.clientSecretExpiresAt)); + map.putString("clientSecretExpiresAt", DateUtil.formatTimestamp(TimeUnit.SECONDS.toMillis(response.clientSecretExpiresAt))); } if (response.registrationAccessToken != null) { diff --git a/packages/react-native-app-auth/ios/RNAppAuth.m b/packages/react-native-app-auth/ios/RNAppAuth.m index c48163427..c6920e085 100644 --- a/packages/react-native-app-auth/ios/RNAppAuth.m +++ b/packages/react-native-app-auth/ios/RNAppAuth.m @@ -643,7 +643,7 @@ - (NSDictionary*)formatRegistrationResponse: (OIDRegistrationResponse*) response @"clientSecret": response.clientSecret ? response.clientSecret : @"", @"clientSecretExpiresAt": response.clientSecretExpiresAt ? [dateFormat stringFromDate:response.clientSecretExpiresAt] : @"", @"registrationAccessToken": response.registrationAccessToken ? response.registrationAccessToken : @"", - @"registrationClientUri": response.registrationClientURI ? response.registrationClientURI : @"", + @"registrationClientUri": response.registrationClientURI ? response.registrationClientURI.absoluteString : @"", @"tokenEndpointAuthMethod": response.tokenEndpointAuthenticationMethod ? response.tokenEndpointAuthenticationMethod : @"", }; }