2016-11-07 11 views
1

ループバックを使用してoauth2サーバーを実装したいと考えています。私はこれまでにexpressを使ってやっていましたが、完璧に動作しますが、ループバックを使用するといくつか問題があります。 oauth2orizeのコードを次に示します。 var app = require( '../../ server/server'); エラー:クライアントをシリアル化に失敗しました。私はエラーを取得しています認可エンドポイントを呼び出すと//は、任意のNode.jsのアプリループバックでouath2を実装できません

var User = app.models.user; 
var Client = app.models.client; 
var Token = app.models.token; 
var Code = app.models.code; 

var server = oauth2orize.createServer();  

// Register serialialization function 
server.serializeClient(function(client, callback) { 
    return callback(null, client._id); 
}); 

// Register deserialization function 
server.deserializeClient(function(id, callback) { 
    Client.findOne({ _id: id }, function (err, client) { 
    if (err) { return callback(err); } 
    return callback(null, client); 
    }); 
}); 
// User authorization endpoint 
exports.authorization = [ 
    server.authorization(function(clientId, redirectUri, callback) { 
    console.log('At Authorization endpoint'); 
    var Client = app.models.client; 
    Client.findOne({where :{ appId: clientId }}, function (err, client) { 
     if (err) { return callback(err); } 
     console.log("Found client : "+client); 
     return callback(null, client, redirectUri); 
    }); 
    })] 

のようにserver.jsが必要です。 serializeClient()を使用してシリアライズ関数を登録する しかし、私はserver.serializeClientとserver.deserializeClientメソッドを実装しました。

+0

'exports.authorisation'は配列ではなくオブジェクトであるべきですか?私。 'exports.authorization = {...' – JonRed

+0

また、これは答えではありませんが、Loopback oauth2の実装について考えてみてください。http://loopback.io/doc/en/lb2/OAuth-2.0.htmlそれを試したので、それを保証することはできません – JonRed

答えて

1

私は最近同じ問題を抱えていました。問題は、私のクライアントモデルにidフィールドがないことでした。私はclientIdフィールドを持っていましたが、oauth2orizeモジュールには特にidフィールドも必要です。 Kinda lameでも実装するのは難しくありません。

関連する問題