|
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