2017-07-11 3 views
2

Ich versuche die Android/iOS-Client-Telefonnummer oder -E-Mail-Adresse mit dem Facebook-Konto-Kit-Dienst zu bestätigen.Wie validiere ich den facebook account kit Autorisierungscode mithilfe der spring-oauth2-Bibliothek?

Inzwischen habe ich den Autorisierungscode vom Client abgerufen. Bitte lassen Sie mich wissen, wie ich den Autorisierungscode mit dem spring-oauth2 Client auf der Serverseite validiere?

Referenz: [https://developers.facebook.com/docs/accountkit/graphapi][1]

Hier ist mein Code:

@Configuration 
@EnableOAuth2Client 
public class SocialConfig extends WebSecurityConfigurerAdapter { 

@Autowired 
OAuth2ClientContext oauth2ClientContext; 

private String[] PUBLIC_URL = { "/*", "/api/v1/account/validate", "login/accountkit", "/api/v1/account" }; 

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    // super.configure(http); 
    http.authorizeRequests() 
    .antMatchers(PUBLIC_URL).permitAll() 
    .anyRequest().authenticated() 
    .and().csrf() 
    .disable() 
    .addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class); 

} 

private Filter ssoFilter() { 
    OAuth2ClientAuthenticationProcessingFilter filter = new OAuth2ClientAuthenticationProcessingFilter(
      "/login/accountkit"); 
    OAuth2ProtectedResourceDetails accountkit = accountKit(); 
    OAuth2RestTemplate template = new OAuth2RestTemplate(accountkit, oauth2ClientContext); 
    filter.setRestTemplate(template); 
    UserInfoTokenServices userInfo = new UserInfoTokenServices(accountKitResource().getUserInfoUri(), 
      accountkit.getClientId()); 
    userInfo.setRestTemplate(template); 
    filter.setTokenServices(userInfo); 
    return filter; 
} 

@Bean 
@ConfigurationProperties("accountkit.client") 
protected OAuth2ProtectedResourceDetails accountKit() { 
    AuthorizationCodeResourceDetails resource = new AuthorizationCodeResourceDetails(); 
    resource.setAccessTokenUri("https://graph.accountkit.com/v1.2/me"); 
    resource.setUserAuthorizationUri("https://graph.accountkit.com/v1.2/access_token"); 
    resource.setClientId("AA|xxxx|xxx"); 
    resource.setGrantType("authorization_code"); 
    resource.setTokenName("access_token"); 
    resource.setAuthenticationScheme(AuthenticationScheme.form); 
    resource.setPreEstablishedRedirectUri("http://localhost:8080/login/accountkit"); 
    return resource; 
} 

@Bean 
@ConfigurationProperties("accountkit.resource") 
protected ResourceServerProperties accountKitResource() { 
    return new ResourceServerProperties(); 
} 

}

Antwort

0

According to facebook Sie Token /debug_token api bestätigen sollte.

1) Erstellen eines App-Zugang Token

(https://developers.facebook.com/docs/howtos/login/login-as-app/)

https://graph.facebook.com/oauth/access_token? 
client_id=YOUR_APP_ID 
&client_secret=YOUR_APP_SECRET 
&grant_type=client_credentials 

2)

(https://developers.facebook.com/docs/howtos/login/debugging-access-tokens/)

https://graph.facebook.com/debug_token? 
input_token=INPUT_TOKEN 
&access_token=ACCESS_TOKEN 
die User Access Token Debuggen

Wo INPUT_TOKEN den Benutzerzugriff ist Token Sie überprüfen möchten, und access_token ist Ihr Token App, die Sie aus Schritt 1

bekam können Sie APP_SECRET hier sehen:

https://developers.facebook.com/apps/YOUR_APP_ID/dashboard/

Siehe this für detaillierte Antworten.

+0

Dank Nilesh, Meine Frage ist, wie OAuth2-Bibliothek verwendet wird, um den Zugriffstoken/Autorisierungscode zu validieren, der mit dem Anmeldeanbieter integriert wird. – Jega

+0

Ich verstehe nicht, warum Sie OAuth2 zum Überprüfen des Access-Token-Codes verwenden möchten. facebook hat apis dazu beauftragt. Bitte korrigieren Sie mich, da ich versuche, die Problembeschreibung und die Lösung, die Sie anwenden möchten, zu verstehen –

+0

Entschuldigung für die Verwirrung, ich versuche, das Konto Kit [PHP-Server-Beispiel] zu implementieren (https: // Entwickler. facebook.com/docs/accountkit/webjs#examplephp) auf meinem Spring-Boot-Projekt Um den Autorisierungsfluss zu implementieren, müssen wir unseren eigenen Code schreiben, um HTTP Call zu machen und unseren Authentifizierungsanbieter zu aktualisieren. Anstatt meinen eigenen Code zu verwenden, dachte ich, den OAUTH2-Client-Lib-Autorisierungsfluss zu verwenden und als einen anderen OAuth2-Provider hinzuzufügen. plz überprüfen Sie dies [Beispiel] (https://spring.io/guides/tutorials/spring-boot-oauth2/#_social_login_authserver), wir haben Konto als einen anderen Anbieter hinzufügen – Jega

Verwandte Themen