Java 使用Facebook令牌从Android应用程序验证Spring应用程序

Java 使用Facebook令牌从Android应用程序验证Spring应用程序,java,android,spring,spring-security,oauth-2.0,Java,Android,Spring,Spring Security,Oauth 2.0,我有后端应用程序(Java+Spring)。我正在开发Angular和Android应用程序,它们使用后端端点。到目前为止,我已经介绍了3种身份验证场景: 从前端使用用户名和密码。Spring创建并管理会话 从前端使用Facebook令牌。应用程序检查数据库中是否存在用户,Spring创建会话。前端保留Fb令牌,并在会话过期时使用它 从Android应用程序使用用户名和密码。Spring验证用户并返回oauth2令牌。Android应用程序需要在每次请求时发送此令牌 唯一缺少的情况是使用Fb

我有后端应用程序(Java+Spring)。我正在开发Angular和Android应用程序,它们使用后端端点。到目前为止,我已经介绍了3种身份验证场景:

  • 从前端使用用户名和密码。Spring创建并管理会话
  • 从前端使用Facebook令牌。应用程序检查数据库中是否存在用户,Spring创建会话。前端保留Fb令牌,并在会话过期时使用它
  • 从Android应用程序使用用户名和密码。Spring验证用户并返回oauth2令牌。Android应用程序需要在每次请求时发送此令牌
唯一缺少的情况是使用Fb令牌从Android应用程序进行身份验证。Android应用程序将Fb令牌发送到后端,在后端验证令牌。用户已通过身份验证,用户的会话已创建。如何为经过身份验证的用户获取oauth令牌?若用户并没有通过oauth端点进行身份验证,那个么令牌可能甚至并没有生成

所以基本上我想用Fb令牌“交换”我的应用程序oauth令牌。我错过什么了吗?我的方法正确吗

public class CustomAuthenticationFilter extends AbstractAuthenticationProcessingFilter {

public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
        SocialAuthenticationToken auth = getAuthFromRequest(request);
        setDetails(request, auth);
        return this.getAuthenticationManager().authenticate(auth);
    }
}