Merge pull request #263 from SailingSteve/CB-14013-InAppBrowser-AllowCustomSchemes

CB-14013: (android) Change the InAppBrowser to allow custom schemes for oAuth
This commit is contained in:
Joe Bowser 2018-04-12 12:01:59 -07:00 committed by GitHub
commit 50db5c498c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 2 deletions

View File

@ -133,6 +133,7 @@ public class InAppBrowser extends CordovaPlugin {
private boolean hideUrlBar = false;
private boolean showFooter = false;
private String footerColor = "";
private String[] allowedSchemes;
/**
* Executes the request and returns PluginResult.
@ -1110,6 +1111,29 @@ public class InAppBrowser extends CordovaPlugin {
LOG.e(LOG_TAG, "Error sending sms " + url + ":" + e.toString());
}
}
// Test for whitelisted custom scheme names like mycoolapp:// or twitteroauthresponse:// (Twitter Oauth Response)
else if (!url.startsWith("http:") && !url.startsWith("https:") && url.matches("^[a-z]*://.*?$")) {
if (allowedSchemes == null) {
String allowed = preferences.getString("AllowedSchemes", "");
allowedSchemes = allowed.split(",");
}
if (allowedSchemes != null) {
for (String scheme : allowedSchemes) {
if (url.startsWith(scheme)) {
try {
JSONObject obj = new JSONObject();
obj.put("type", "customscheme");
obj.put("url", url);
sendUpdate(obj, true);
return true;
} catch (JSONException ex) {
LOG.e(LOG_TAG, "Custom Scheme URI passed in has caused a JSON error.");
}
}
}
}
}
return false;
}
@ -1232,4 +1256,4 @@ public class InAppBrowser extends CordovaPlugin {
super.onReceivedHttpAuthRequest(view, handler, host, realm);
}
}
}
}

View File

@ -36,7 +36,8 @@
'loadstart': channel.create('loadstart'),
'loadstop': channel.create('loadstop'),
'loaderror': channel.create('loaderror'),
'exit': channel.create('exit')
'exit': channel.create('exit'),
'customscheme': channel.create('customscheme')
};
}