2015-04-17 16 views
10

Tôi có dịch vụ và mục tiêu của tôi là cho phép người dùng xác thực chúng tôi với tài khoản Github của anh ấy/cô ấy qua OAuth. Lớp API là không trạng thái, vì vậy tôi không muốn duy trì bất kỳ thông tin phiên nào. Mã tôi có cho đến nay là:Tôi làm cách nào để định cấu hình hộ chiếu-github để xác nhận người dùng khi gọi lại?

app.use passport.initialize() 
    app.use passport.session() 

    passport.use new GitHubStrategy 
    clientID: global.config.oauth.github.clientID 
    clientSecret: global.config.oauth.github.clientSecret 
    callbackURL: "http://localhost:9500/auth/github/callback" 
    passReqToCallback: true 
    , (req, accessToken, refreshToken, profile, done) -> 
    console.log req.params 
    serviceQuery = 
     service: 'github' 
     provider_id: "#{profile.id}" 
     UserId: 13 

    global.db.Service.find 
     where: serviceQuery 
    .then (dbService) -> 
     if not dbService 
     newService = 
      service: 'github' 
      token: accessToken 
      secret: null 
      provider_id: profile.id 
      raw: profile._json 
      UserId: 13 
     global.db.Service.create newService 
     else 
     dbService.token = accessToken 
     dbService.raw = profile._json 
     dbService.save() 
    .then -> 
     done null, true 


    app.get '/auth/github/:sessionToken', (req, res, next) -> 
    console.log req.params 
    next() 
    , passport.authenticate 'github', 
    scope: 'repo' 
    session: false 

    app.get '/auth/github/callback', passport.authenticate('github', 
    scope: 'repo' 
    session: false 
), (req, res) -> 
    res.redirect 'http://localhost:8080/app' 

Vì vậy mà khi người dùng đang hướng đến /auth/github/:sessionToken, tôi muốn passport để làm phép thuật của mình và chuyển hướng người dùng đến github. Điều này làm việc tuyệt vời. Nhưng khi họ quay trở lại /auth/github/callback, tôi vẫn cần phải xác định được người dùng đó là ai.

Vì đây là dịch vụ API, nên được coi là không quốc tịch, như tôi đã đề cập trước đây, tôi đang tìm cách chuyển mã thông báo đó đến /auth/github/callback. Làm thế nào tôi có thể thực hiện điều này?

Trả lời

2

Hãy thử nhật ký bảng điều khiển của req.user trong/auth/github/callback của bạn. Tôi tin rằng req.user sẽ vẫn lưu trữ thông tin người dùng của họ. Khi nó xuất hiện trong this tutorial, chúng sẽ truyền thông tin người dùng được hiển thị bằng cách chuyển trong req.user.

+0

[Hướng dẫn này] (https://scotch.io/tutorials/easy-node-authentication-google) thực sự hiển thị cách hiển thị thông tin từ xác thực google. Có vẻ thông tin google được hiển thị trong biến user.google. Có thể thử và giao diện điều khiển đăng nhập req.user.github để nhận thông tin github của họ. – tilted

+0

Nhưng làm cách nào để lưu trữ nếu tôi không đặt phiên? – Shamoon

+0

Hey @Shamoon cảm ơn rất nhiều. Tôi vui vì nó đã giúp đỡ. – tilted

Các vấn đề liên quan