2011-10-27 9 views
0

私はconnect-authとGoogle OAuth2の実行例を得ましたが、自分のコードで動作させることはできません。どういうわけか、私はGoogleからaccess_tokenを取得しますが、アクセストークンを使用してカールを介してデータを取得しようとすると、401があります。リクエストにエラーがありました。私がthe example codeを使用したときにGoogleから受け取ったのと同じ応答ですが、何かがトークンに間違っていなければなりませんか?CoffeeScriptでExpressとconnect-authを接続

プロジェクト全体で認証が必要なため、ミドルウェアを使用したいと考えています。また、私は接続ルータの代わりにエクスプレスルータを使用しています。

express  = require 'express' 
app   = module.exports = express.createServer() 
connect  = require 'connect' 
auth  = require 'connect-auth' 
store  = require('connect-redis')(express) 
keys  = require './keys_file' 
routes  = require("./routes") 

auth_middleware = -> 
    (req, res, next) -> 
    urlp = url.parse(req.url, true) 
    if urlp.query.login_with 
     req.authenticate [ urlp.query.login_with ], (error, authenticated) -> 
     if error 
      console.log error 
      res.end() 
     else 
      next() unless authenticated is `undefined` 
    else 
     next() 

app.configure -> 
    app.set 'views', __dirname + '/views' 
    app.set 'view engine', 'jade' 
    app.use connect.logger() 
    app.use express.bodyParser() 
    app.use express.cookieParser() 
    app.use express.session({ secret: 'keyboard cat', store: new store }) 
    app.use express.static(__dirname + '/public') 
    app.use auth({strategies: [ 
    auth.Twitter({ consumerKey: keys.twitterConsumerKey, consumerSecret: keys.twitterConsumerSecret}), 
    auth.Google2({ appId : keys.google2Id, appSecret: keys.google2Secret, scope: "email", callback: keys.google2CallbackAddress}) 
    ], trace: true}) 
    app.use auth_middleware 
    app.use app.router 

app.configure "development", -> 
    app.use express.errorHandler(
    dumpExceptions: true 
    showStack: true 
) 

app.configure "production", -> 
    app.use express.errorHandler() 

app.dynamicHelpers 
    session: (req, res) -> 
    return req.session 

app.dynamicHelpers 
    messages: require 'express-messages' 

app.get /.*/, routes.index 

app.listen 3000 

console.log 'Express server listening on port %d in %s mode', app.address().port, app.settings.env 

index.jsルーティング:ここでは、コードです

exports.index = function(req, res) { 
    res.writeHead(200, {'Content-Type': 'text/html'}) 
    if(req.isAuthenticated()) { 
    res.end(authenticatedContent.replace("#USER#", JSON.stringify(req.getAuthDetails().user) )); 
    } else { 
    res.end(unAuthenticatedContent.replace("#PAGE#", req.url)); 
    } 
}; 

答えて

1

私は知らないのCoffeeScriptは、しかし:

auth_middleware = -> 
    (req, res, next) -> 
    urlp = url.parse(req.url, true) 
    if urlp.query.login_with 
     req.authenticate [ urlp.query.login_with ], (error, authenticated) -> 
     if error 
      console.log error 
      res.end() 
     else 
      next() unless authenticated is `undefined` 
    else 
     next() 

は次のようになります。それ以外

auth_middleware = (req, res, next)-> 
    urlp = url.parse(req.url, true) 
    if urlp.query.login_with 
    req.authenticate [ urlp.query.login_with ], (error, authenticated) -> 
     if error 
     console.log error 
     res.end() 
    else 
    next() unless authenticated is `undefined` 

next() は、私は大きな問題はしかし、あなたがアップ「スコープ」を送っていると思い、試してみてください。

auth.Google2({ appId : keys.google2Id, appSecret: keys.google2Secret, callback: keys.google2CallbackAddress}) 
関連する問題