2016-02-12 71 views
0

我有一個關於 https://github.com/jaredhanson/passport-facebook節點護照的Facebook SDK successRedirect VS callbackURL

當我使用的護照Facebook的具體問題。 我喜歡這個配置。

passport.use(new FacebookStrategy({ 
    clientID: config.facebook.facebook_app_id, 
     clientSecret: config.facebook.facebook_secret_id, 
     callbackURL: config.facebook.callback_url, 
     passReqToCallback: true 
    }, 
     function(req, accessToken, refreshToken, profile, done) { 
    //code for success: Function A 
    } 

然後驗證

passport.authenticate('facebook', { 
     successRedirect: 'http://app.mykomae.com/#/app/dashboard', 
     failureRedirect: '/auth/unauthorized' 
    })); 

是什麼VS callbackURL successRedirect區別?

並且當函數處理程序'Function A:above code'正在調用?

感謝

回答

1

callbackURL告訴上外部地址,用戶完成身份驗證表單後可以將其再打你的應用程序,而sucessRedirect是對failureRedirect是根據認證結果執行內部路由的Facebook。

passport.authenticate(...)編排整個過程。 「快樂」的流動大致如下:

  1. passport.authenticate(...)檢測到存在未被驗證的用戶試圖訪問給定的路徑,它重定向至Facebook的OAuth;
  2. 如果facebook auth成功,您的驗證回調被調用(這是您的「功能A」),它應該通過您的內部用戶數據庫中的facebook用戶名匹配用戶並相應地進行設置(通常爲用戶創建一個會話) ;
  3. 如果一切順利,用戶將被重定向到successRedirect,這通常是一個內部路由,如/profile,從那時起,您可以使用在上一步中查找的用戶數據。

我希望能解釋一下。

+0

感謝您的答案,步驟。在上面的步驟中使用callbackURL的時候?它從未被使用過? –

+0

Np。 'callbackURL'是一個完整的URL Facebook可以調用你的應用程序。這是你想調用'passport.authenticate(...)'的地方。例如。當'callbackURL'爲'http:// your.domain.example.com/callback'時,你應該將'passport.authenticate(...)'放在這樣的路由中:'app.get('/回調',passport.authenticate(...),...)'。 –

+0

我已經指定'successRedirect'和callbackURL在一起。如果登錄成功,哪個網址會被回叫?如果兩個網址一起被調用,那麼訂單是什麼?再次感謝 –