2016-12-23 8 views
0

私はユーザーを自分のREST APIに認証しようとしたときにthisチュートリアルに従いました。すべて動作し、プリンシパルから自分の名前が返されますが、スコープの中の友人リストなど)。どのように私は春を使ってこれを行うのですか? 春のセキュリティを使用してFacebookのメールアドレスを取得する

YAML設定ファイル:

security: 
    oauth2: 
    client: 
     clientId: CENSORED 
     clientSecret: CENSORED 
     accessTokenUri: https://graph.facebook.com/oauth/access_token 
     userAuthorizationUri: https://www.facebook.com/dialog/oauth 
     tokenName: oauth_token 
     authenticationScheme: query 
     clientAuthenticationScheme: form 
     scope: email,user_friends,public_profile 
    resource: 
     userInfoUri: https://graph.facebook.com/me 
    user: 
    password: password 

spring: 
    social: 
    facebook: 
     app-id: CENSORED 
     app-secret: CENSORED 

RestController:私は私のユーザーを郵送し、他の「友人」はまた、これを使用している場合も参照できるようにしたいので、私はこの情報が必要に

@RestController 
public class UserController { 

    @RequestMapping(value = "/user", method = RequestMethod.GET) 
    public Principal user(FixedPrincipalExtractor extractor, Principal principal) { 

     return principal; 
    } 
} 

応用。

ありがとうございます!何か不明な点がある場合は質問してください。

(私はRESTFul APIの認証としてspring securityを使用してmavenを使用していますが、これはAngularJSフロントエンドに接続する必要があります| |私はSpringを初めて使用しています。通常はJAX-RSを使用してREST APIを構築します)

+1

私は春を知っていませんが、宣言的なフィールドに関するものとします。このスレッドを見て:http://stackoverflow.com/questions/32584850/facebook-js-sdks-fb-api-me-method-doesnt-return-the-fields-i-expect-in-gra – luschn

答えて

0

私は、応答マップのフィールドがidnameの場合と同じ問題がありました。

@ luschnが正しい。応答フィールドを明示的に指定する必要があります。電子メールの場合

、私はあなたの応答に必要なフィールドものを見るために、このグラフエクスプローラツールを使用し

resource: userInfoUri: https://graph.facebook.com/me?fields=id,name,email

としてuserInfoUriプロパティを変更しました。コーディングハッピー

https://developers.facebook.com/tools/explorer/

関連する問題