首页>代码>Spring Boot整合Java开源OAuth库ScribeJava实现第三方用户登录授权实例,支持QQ,微信,微博等平台>/scribejava-oauth2/src/main/java/com/hellokoding/springboot/oauth2/OAuth2ServiceFactory.java
package com.hellokoding.springboot.oauth2; import com.github.scribejava.core.builder.ServiceBuilder; import com.github.scribejava.core.builder.api.DefaultApi20; import com.github.scribejava.core.extractors.OAuth2AccessTokenExtractor; import com.github.scribejava.core.extractors.OAuth2AccessTokenJsonExtractor; import com.github.scribejava.core.extractors.TokenExtractor; import com.github.scribejava.core.model.OAuth2AccessToken; import com.github.scribejava.core.oauth.OAuth20Service; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; @RequiredArgsConstructor @Component public class OAuth2ServiceFactory { private static Map<String, OAuth20Service> services = new HashMap<>(); private final OAuth2Properties oAuth2Properties; public OAuth20Service getService(String serviceId) { if (services.containsKey(serviceId)) return services.get(serviceId); OAuth2Properties.Registration registration = oAuth2Properties.getRegistration().get(serviceId); OAuth2Properties.Provider provider = oAuth2Properties.getProvider().get(serviceId); OAuth20Service oAuth20Service = new ServiceBuilder(registration.getClientId()) .apiSecret(registration.getClientSecret()) .callback(registration.getRedirectUri()) .defaultScope(registration.getScope()) .responseType(registration.getAuthorizationGrantType()) .userAgent("HelloKoding") .build(new OAuth2Api(provider)); services.put(serviceId, oAuth20Service); return oAuth20Service; } @RequiredArgsConstructor class OAuth2Api extends DefaultApi20 { private final OAuth2Properties.Provider provider; @Override public String getAccessTokenEndpoint() { return provider.getTokenUri(); } @Override public String getAuthorizationBaseUrl() { return provider.getAuthorizationUri(); } @Override public String getRevokeTokenEndpoint() { return provider.getRevokeTokenUri(); } @Override public TokenExtractor<OAuth2AccessToken> getAccessTokenExtractor() { if ("github".equalsIgnoreCase(provider.getName())) return OAuth2AccessTokenExtractor.instance(); return OAuth2AccessTokenJsonExtractor.instance(); } public String getUserInfoEndpoint() { return provider.getUserInfoUri(); } public String getUserNameAttribute() { return provider.getUserNameAttribute(); } public String getRevokePermissionEndpoint() { return provider.getRevokePermissionUri(); } } }

sjwc88 LV4
2024年12月15日
15578157792 LV7
2024年12月6日
哪里的完整版 LV8
2024年9月20日
dapeng0011 LV15
2024年8月25日
唐僧洗头爱飘柔 LV22
2024年6月21日
叁卍石 LV5
2024年3月20日
kaye7549317
2024年1月16日
暂无贡献等级
mukoooo LV2
2023年12月5日
hhsoft LV1
2023年10月22日
601601lmy LV5
2023年7月12日