|
28 | 28 | import com.github.scribejava.apis.GoogleApi20;
|
29 | 29 | import com.github.scribejava.apis.GitHubApi;
|
30 | 30 |
|
| 31 | +import com.github.scribejava.apis.ConfigurableApi; |
31 | 32 | import com.github.scribejava.apis.SlackApi;
|
32 | 33 |
|
33 | 34 | import com.facebook.react.bridge.ReadableMap;
|
@@ -59,15 +60,27 @@ static public OAuth20Service getApiFor20Provider(
|
59 | 60 | ) {
|
60 | 61 | if (providerName.equalsIgnoreCase("facebook")) {
|
61 | 62 | return OAuthManagerProviders.facebookService(params, opts, callbackUrl);
|
62 |
| - } else if (providerName.equalsIgnoreCase("google")) { |
| 63 | + } |
| 64 | + |
| 65 | + if (providerName.equalsIgnoreCase("google")) { |
63 | 66 | return OAuthManagerProviders.googleService(params, opts, callbackUrl);
|
64 |
| - } else if (providerName.equalsIgnoreCase("github")) { |
| 67 | + } |
| 68 | + |
| 69 | + if (providerName.equalsIgnoreCase("github")) { |
65 | 70 | return OAuthManagerProviders.githubService(params, opts, callbackUrl);
|
66 |
| - } else if (providerName.equalsIgnoreCase("slack")) { |
| 71 | + } |
| 72 | + |
| 73 | + if (providerName.equalsIgnoreCase("slack")) { |
67 | 74 | return OAuthManagerProviders.slackService(params, opts, callbackUrl);
|
68 | 75 | } else {
|
69 | 76 | return null;
|
70 | 77 | }
|
| 78 | + |
| 79 | + if (params.containsKey("access_token_url") && params.containsKey("authorize_url")) { |
| 80 | + return OAuthManagerProviders.configurableService(params, opts, callbackUrl); |
| 81 | + } |
| 82 | + |
| 83 | + return null; |
71 | 84 | }
|
72 | 85 |
|
73 | 86 | static public OAuthRequest getRequestForProvider(
|
@@ -198,6 +211,19 @@ private static OAuth20Service githubService(
|
198 | 211 | return builder.build(GitHubApi.instance());
|
199 | 212 | }
|
200 | 213 |
|
| 214 | + private static OAuth20Service configurableService( |
| 215 | + final HashMap cfg, |
| 216 | + @Nullable final ReadableMap opts, |
| 217 | + final String callbackUrl |
| 218 | + ) { |
| 219 | + ServiceBuilder builder = OAuthManagerProviders._oauth2ServiceBuilder(cfg, opts, callbackUrl); |
| 220 | + ConfigurableApi api = ConfigurableApi.instance() |
| 221 | + .setAccessTokenEndpoint((String) cfg.get("access_token_url")) |
| 222 | + .setAuthorizationBaseUrl((String) cfg.get("authorize_url")); |
| 223 | + |
| 224 | + return builder.build(api); |
| 225 | + } |
| 226 | + |
201 | 227 | private static OAuth20Service slackService(
|
202 | 228 | final HashMap cfg,
|
203 | 229 | @Nullable final ReadableMap opts,
|
|
0 commit comments