Skip to content

Commit bf114ea

Browse files
author
Kadi Kraman
committed
Enable passing in additional parameters on Android
1 parent 3cb48f7 commit bf114ea

File tree

2 files changed

+54
-13
lines changed

2 files changed

+54
-13
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ const result = await appAuth.authorize(scopes);
5454
// returns accessToken, accessTokenExpirationDate and refreshToken
5555
```
5656

57-
## config
57+
#### config
5858

5959
This is your configuration object for the client
6060
- **issuer**: (`string`) *REQUIRED* the url of the auth server

android/src/main/java/com/reactlibrary/RNAppAuthModule.java

Lines changed: 53 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import com.facebook.react.bridge.ReactMethod;
1414
import com.facebook.react.bridge.Promise;
1515
import com.facebook.react.bridge.ReadableArray;
16+
import com.facebook.react.bridge.ReadableMap;
17+
import com.facebook.react.bridge.ReadableMapKeySetIterator;
1618
import com.facebook.react.bridge.WritableMap;
1719

1820
import net.openid.appauth.AuthorizationException;
@@ -26,6 +28,7 @@
2628

2729
import java.text.SimpleDateFormat;
2830
import java.util.Date;
31+
import java.util.HashMap;
2932

3033
public class RNAppAuthModule extends ReactContextBaseJavaModule implements ActivityEventListener {
3134

@@ -63,8 +66,29 @@ private WritableMap tokenResponseToMap(TokenResponse response) {
6366
return map;
6467
}
6568

69+
private HashMap<String, String> additionalParametersToMap(ReadableMap additionalParameters) {
70+
71+
HashMap<String, String> additionalParametersHash = new HashMap<>();
72+
73+
ReadableMapKeySetIterator iterator = additionalParameters.keySetIterator();
74+
75+
if (iterator.hasNextKey()) {
76+
String nextKey = iterator.nextKey();
77+
additionalParametersHash.put(nextKey, additionalParameters.getString(nextKey));
78+
}
79+
80+
return additionalParametersHash;
81+
}
82+
6683
@ReactMethod
67-
public void authorize(String issuer, final String redirectUrl, final String clientId, final ReadableArray scopes, final Promise promise) {
84+
public void authorize(
85+
String issuer,
86+
final String redirectUrl,
87+
final String clientId,
88+
final ReadableArray scopes,
89+
final ReadableMap additionalParameters,
90+
final Promise promise
91+
) {
6892

6993
final Context context = this.reactContext;
7094
this.promise = promise;
@@ -88,11 +112,16 @@ public void onFetchConfigurationCompleted(
88112
serviceConfiguration,
89113
clientId,
90114
ResponseTypeValues.CODE,
91-
Uri.parse(redirectUrl));
115+
Uri.parse(redirectUrl)
116+
)
117+
.setScope(scopesString);
118+
119+
if (additionalParameters != null) {
120+
authRequestBuilder.setAdditionalParameters(additionalParametersToMap(additionalParameters));
121+
}
122+
123+
AuthorizationRequest authRequest = authRequestBuilder.build();
92124

93-
AuthorizationRequest authRequest = authRequestBuilder
94-
.setScope(scopesString)
95-
.build();
96125
AuthorizationService authService = new AuthorizationService(context);
97126
Intent authIntent = authService.getAuthorizationRequestIntent(authRequest);
98127
currentActivity.startActivityForResult(authIntent, 0);
@@ -103,7 +132,15 @@ public void onFetchConfigurationCompleted(
103132
}
104133

105134
@ReactMethod
106-
public void refresh(String issuer, final String redirectUrl, final String clientId, final String refreshToken, final ReadableArray scopes, final Promise promise) {
135+
public void refresh(
136+
String issuer,
137+
final String redirectUrl,
138+
final String clientId,
139+
final String refreshToken,
140+
final ReadableArray scopes,
141+
final ReadableMap additionalParameters,
142+
final Promise promise
143+
) {
107144
final Context context = this.reactContext;
108145

109146
final String scopesString = this.arrayToString(scopes);
@@ -123,13 +160,17 @@ public void onFetchConfigurationCompleted(
123160
new TokenRequest.Builder(
124161
serviceConfiguration,
125162
clientId
126-
);
163+
)
164+
.setScope(scopesString)
165+
.setRefreshToken(refreshToken)
166+
.setRedirectUri(Uri.parse(redirectUrl));
167+
168+
if (additionalParameters != null) {
169+
tokenRequestBuilder.setAdditionalParameters(additionalParametersToMap(additionalParameters));
170+
}
171+
172+
TokenRequest tokenRequest = tokenRequestBuilder.build();
127173

128-
TokenRequest tokenRequest = tokenRequestBuilder
129-
.setScope(scopesString)
130-
.setRefreshToken(refreshToken)
131-
.setRedirectUri(Uri.parse(redirectUrl))
132-
.build();
133174

134175
AuthorizationService authService = new AuthorizationService(context);
135176

0 commit comments

Comments
 (0)