2012-11-01 2 views
3

아마도 분명하고 간단합니다. Facebook 사용자의 친구 정보에 액세스해야하는 애플리케이션이 있습니다. PassportJS를 사용하여 사용자를 인증하고 응용 프로그램이 액세스 권한을받은 후 사용자 친구 정보를 가져 오는 방법은 무엇입니까? 아니면 보호 된 정보입니까? 친구가 액세스하는 사용자의 범위 매개 변수는 무엇입니까?PassportJS를 사용할 때 Facebook 그래프 API와 상호 작용하는 방법

편집 : 원래 질문에 실제로 답변하지는 않았지만 답변을 통해 조사를 계속할 수있었습니다.

내 솔루션은 로그인 흐름을 관리하기 위해 PassportJS를 사용하는 것이 었습니다. 그리고 나는 accessToken을 받았을 때 Facebook Graph API 호출에 사용했습니다.이 호출은 매우 쉽게 할 수 있습니다. 내 모듈에 대해 약간의 재 작업을 수행하고 GitHub에 게시하여 그대로 사용합니다.

+0

그래프 API를 어떻게 작성하는지 공유해주세요. –

답변

1

범위를 수정하려면 Facebook 전략에 대한 경로를 설정할 때 이렇게합니다. 내가 몽구스와 MongoDB를 내 정보를 저장하고

app.get('/auth/facebook', passport.authenticate('facebook', { scope: 'email' })); 
app.get('/auth/facebook/callback', 
    passport.authenticate('facebook', { successRedirect: '/', 
             failureRedirect: '/' })); 

,하지만 당신은 쉽게 할 수 있습니다 나는 사용자의 이메일 내 범위의 일부가 될하려는 경우

예를 들어, 광산은 다음과 같을 것이다 친구를 req.user 안에 고수하십시오. 때로는 너무 같은 CONSOLE.LOG (프로필) 넣어하는 것이 도움이된다

passport.use(new FacebookStrategy({ 
    clientID: Common.conf.fb.appId, 
    clientSecret: Common.conf.fb.appSecret, 
    callbackURL: Common.conf.site_url + "/auth/facebook/callback" 
    }, 
    function(accessToken, refreshToken, profile, done) { 
    Model.User.findOne({uid: profile.id}, function(err, user) { 
     if (err) { return done(err); } 
     if (user) { done(null, user); } else { 
     var user_data = { 
      provider: profile.provider 
      , alias: profile.username 
      , email:  profile.emails[0].value 
      , uid:  profile.id 
      , created: new Date().getTime() 
      , name: { 
      first: profile.name.givenName 
      , last: profile.name.familyName 
      } 
      , alerts: { 
      email:  true 
      , mobile: false 
      , features: true 
      } 
     }; 
     new Model.User(user_data).save(function(err, user) { 
      if(err) { throw err; } 
      done(null, user); 
     }); 
     } 
    }); 
    } 
)); 

: 위해

function(accessToken, refreshToken, profile, done) { 
     console.log(profile); 

을 당신이 볼 수 있도록 여기 내 페이스 북 사용자의 데이터를 매핑하는 방법의 예입니다 Facebook API가 제공하는 원시 출력과 사용자 정의 범위 변수가 있는지 확인합니다.

+0

원래 질문에 대한 답변을 보지 못했습니다. @scott –

+0

이 답변이 범위를 벗어 났음을 전적으로 동의합니다 .. – jvmvik

관련 문제