Skip to content

Commit 15d7905

Browse files
authored
Merge pull request #1 from pitchtarget/fix-android-custom-headers
FIX: add support for custom headers in android
2 parents b280134 + d0113ee commit 15d7905

File tree

1 file changed

+42
-34
lines changed

1 file changed

+42
-34
lines changed

android/src/main/java/io/fullstack/oauth/OAuthManagerModule.java

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,16 @@ public String getName() {
6767

6868
@ReactMethod
6969
public void configureProvider(
70-
final String providerName,
71-
final ReadableMap params,
70+
final String providerName,
71+
final ReadableMap params,
7272
@Nullable final Callback onComplete
7373
) {
7474
Log.i(TAG, "configureProvider for " + providerName);
7575

7676
// Save callback url for later
7777
String callbackUrlStr = params.getString("callback_url");
7878
_callbackUrls.add(callbackUrlStr);
79-
79+
8080
Log.d(TAG, "Added callback url " + callbackUrlStr + " for providler " + providerName);
8181

8282
// Keep configuration map
@@ -104,9 +104,9 @@ public void configureProvider(
104104

105105
@ReactMethod
106106
public void authorize(
107-
final String providerName,
108-
@Nullable final ReadableMap params,
109-
final Callback callback)
107+
final String providerName,
108+
@Nullable final ReadableMap params,
109+
final Callback callback)
110110
{
111111
try {
112112
final OAuthManagerModule self = this;
@@ -115,7 +115,7 @@ public void authorize(
115115
Activity activity = this.getCurrentActivity();
116116
FragmentManager fragmentManager = activity.getFragmentManager();
117117
String callbackUrl = "http://localhost/" + providerName;
118-
118+
119119
OAuthManagerOnAccessTokenListener listener = new OAuthManagerOnAccessTokenListener() {
120120
public void onRequestTokenError(final Exception ex) {
121121
Log.e(TAG, "Exception with request token: " + ex.getMessage());
@@ -139,7 +139,7 @@ public void onOAuth2AccessToken(final OAuth2AccessToken accessToken) {
139139
};
140140

141141
if (authVersion.equals("1.0")) {
142-
final OAuth10aService service =
142+
final OAuth10aService service =
143143
OAuthManagerProviders.getApiFor10aProvider(providerName, cfg, params, callbackUrl);
144144

145145
OAuthManagerFragmentController ctrl =
@@ -149,7 +149,7 @@ public void onOAuth2AccessToken(final OAuth2AccessToken accessToken) {
149149
} else if (authVersion.equals("2.0")) {
150150
final OAuth20Service service =
151151
OAuthManagerProviders.getApiFor20Provider(providerName, cfg, params, callbackUrl);
152-
152+
153153
OAuthManagerFragmentController ctrl =
154154
new OAuthManagerFragmentController(mReactContext, fragmentManager, providerName, service, callbackUrl);
155155

@@ -165,9 +165,9 @@ public void onOAuth2AccessToken(final OAuth2AccessToken accessToken) {
165165

166166
@ReactMethod
167167
public void makeRequest(
168-
final String providerName,
168+
final String providerName,
169169
final String urlString,
170-
final ReadableMap params,
170+
final ReadableMap params,
171171
final Callback onComplete) {
172172

173173
Log.i(TAG, "makeRequest called for " + providerName + " to " + urlString);
@@ -190,7 +190,7 @@ public void makeRequest(
190190
}
191191

192192
String httpMethod;
193-
if (params.hasKey("method")) {
193+
if (params.hasKey("method")) {
194194
httpMethod = params.getString("method");
195195
} else {
196196
httpMethod = "GET";
@@ -215,19 +215,27 @@ public void makeRequest(
215215
httpVerb = Verb.TRACE;
216216
} else {
217217
httpVerb = Verb.GET;
218-
}
219-
218+
}
219+
220220
ReadableMap requestParams = null;
221221
if (params != null && params.hasKey("params")) {
222222
requestParams = params.getMap("params");
223223
}
224224
OAuthRequest request = oauthRequestWithParams(providerName, cfg, authVersion, httpVerb, url, requestParams);
225225

226+
if (params != null && params.hasKey("headers")) {
227+
HashMap<String, String> headers = (HashMap<String, String>) params.toHashMap().get("headers");
228+
229+
for (Map.Entry<String, String> item : headers.entrySet()) {
230+
request.addHeader(item.getKey(), item.getValue());
231+
}
232+
}
233+
226234
if (authVersion.equals("1.0")) {
227-
final OAuth10aService service =
235+
final OAuth10aService service =
228236
OAuthManagerProviders.getApiFor10aProvider(providerName, cfg, requestParams, null);
229237
OAuth1AccessToken token = _credentialsStore.get(providerName, OAuth1AccessToken.class);
230-
238+
231239
service.signRequest(token, request);
232240
} else if (authVersion.equals("2.0")) {
233241
final OAuth20Service service =
@@ -244,7 +252,7 @@ public void makeRequest(
244252
onComplete.invoke(err);
245253
return;
246254
}
247-
255+
248256
final Response response = request.send();
249257
final String rawBody = response.getBody();
250258

@@ -255,7 +263,7 @@ public void makeRequest(
255263
resp.putInt("status", response.getCode());
256264
resp.putString("data", rawBody);
257265
onComplete.invoke(null, resp);
258-
266+
259267
} catch (IOException ex) {
260268
Log.e(TAG, "IOException when making request: " + ex.getMessage());
261269
ex.printStackTrace();
@@ -277,18 +285,18 @@ private OAuthRequest oauthRequestWithParams(
277285
OAuthRequest request;
278286
// OAuthConfig config;
279287

280-
if (authVersion.equals("1.0")) {
281-
// final OAuth10aService service =
288+
if (authVersion.equals("1.0")) {
289+
// final OAuth10aService service =
282290
// OAuthManagerProviders.getApiFor10aProvider(providerName, cfg, null, null);
283291
OAuth1AccessToken oa1token = _credentialsStore.get(providerName, OAuth1AccessToken.class);
284292
request = OAuthManagerProviders.getRequestForProvider(
285-
providerName,
293+
providerName,
286294
httpVerb,
287-
oa1token,
295+
oa1token,
288296
url,
289297
cfg,
290298
params);
291-
299+
292300
// config = service.getConfig();
293301
// request = new OAuthRequest(httpVerb, url.toString(), config);
294302
} else if (authVersion.equals("2.0")) {
@@ -298,13 +306,13 @@ private OAuthRequest oauthRequestWithParams(
298306

299307
OAuth2AccessToken oa2token = _credentialsStore.get(providerName, OAuth2AccessToken.class);
300308
request = OAuthManagerProviders.getRequestForProvider(
301-
providerName,
309+
providerName,
302310
httpVerb,
303-
oa2token,
311+
oa2token,
304312
url,
305313
cfg,
306314
params);
307-
315+
308316
// config = service.getConfig();
309317
// request = new OAuthRequest(httpVerb, url.toString(), config);
310318
} else {
@@ -322,8 +330,8 @@ public void getSavedAccounts(final ReadableMap options, final Callback onComplet
322330

323331
@ReactMethod
324332
public void getSavedAccount(
325-
final String providerName,
326-
final ReadableMap options,
333+
final String providerName,
334+
final ReadableMap options,
327335
final Callback onComplete)
328336
{
329337
try {
@@ -343,7 +351,7 @@ public void getSavedAccount(
343351
onComplete.invoke(null, resp);
344352
} else if (authVersion.equals("2.0")) {
345353
OAuth2AccessToken token = _credentialsStore.get(providerName, OAuth2AccessToken.class);
346-
354+
347355
if (token == null || token.equals("")) {
348356
throw new Exception("No token found");
349357
}
@@ -360,7 +368,7 @@ public void getSavedAccount(
360368
ex.printStackTrace();
361369
exceptionCallback(ex, onComplete);
362370
}
363-
371+
364372
}
365373

366374
@ReactMethod
@@ -429,7 +437,7 @@ private WritableMap accessTokenResponse(
429437
String uuid = accessToken.getParameter("user_id");
430438
response.putString("uuid", uuid);
431439
String oauthTokenSecret = (String) accessToken.getParameter("oauth_token_secret");
432-
440+
433441
String tokenType = (String) accessToken.getParameter("token_type");
434442
if (tokenType == null) {
435443
tokenType = "Bearer";
@@ -465,18 +473,18 @@ private WritableMap accessTokenResponse(
465473

466474
String uuid = accessToken.getParameter("user_id");
467475
response.putString("uuid", uuid);
468-
476+
469477
WritableMap credentials = Arguments.createMap();
470478
Log.d(TAG, "Credential raw response: " + accessToken.getRawResponse());
471-
479+
472480
credentials.putString("accessToken", accessToken.getAccessToken());
473481
String authHeader;
474482

475483
String tokenType = accessToken.getTokenType();
476484
if (tokenType == null) {
477485
tokenType = "Bearer";
478486
}
479-
487+
480488
String scope = accessToken.getScope();
481489
if (scope == null) {
482490
scope = (String) cfg.get("scopes");

0 commit comments

Comments
 (0)