我正在尝试使用社交登录登录我的 Web 应用程序(使用 Spring Boot 开发)。谷歌和脸书的登录没问题。但由于某种原因,Twitter 登录中存在令牌问题。我已经在 Twitter 开发者网站上创建了该项目并获得了所有凭据。请参考我下面的代码。
下面提到了我的属性文件值。
twitter.client.client-id=XXXXXXX
twitter.client.client-secret=XXXXXXXX
twitter.client.access-token-uri= https://api.twitter.com/oauth/access_token
twitter.client.user-authorization-uri= https://api.twitter.com/oauth/authorize
twitter.client.token-name=oauth_token
twitter.client.authentication-scheme=表单
twitter.resource.user-info-uri= https://api.twitter.com/1.1/account/verify_credentials.json
过滤方法
private Filter ssoTwitterFilter(String processingUrl, PrincipalExtractor principalExtractor) {
OAuth2ClientAuthenticationProcessingFilter twitterFilter = new OAuth2ClientAuthenticationProcessingFilter(
processingUrl);
LOGGER.debug("processingUrl :{} ", processingUrl);
twitterFilter.setAuthenticationSuccessHandler(authenticationSuccessHandlerAndRegistrationFilter());
OAuth2RestTemplate twitterTemplate = new OAuth2RestTemplate(twitter(), oauth2ClientContext);
twitterFilter.setRestTemplate(twitterTemplate);
UserInfoTokenServices tokenServices = new UserInfoTokenServices(twitterResource().getUserInfoUri(),
twitter().getClientId());
tokenServices.setRestTemplate(twitterTemplate);
tokenServices.setPrincipalExtractor(principalExtractor);
return twitterFilter;
}
Run Code Online (Sandbox Code Playgroud)
这些是 bean 配置。
@Bean
@ConfigurationProperties("twitter.client")
public AuthorizationCodeResourceDetails twitter() {
return new AuthorizationCodeResourceDetails();
}
@Bean
@ConfigurationProperties("twitter.resource")
public ResourceServerProperties twitterResource() {
return new ResourceServerProperties();
} …
Run Code Online (Sandbox Code Playgroud)