// 注册 序列化 serializeClient 方法 // 当client重定向用户到用户授权接口,授权交易被启动,为完成这个交易,用户必做批准授权请求 // 因为这可能涉及多个HTTP请求/响应交换,交易需要存储的会话中 server.serializeClient(function(client, callback) { return callback(null, client._id); });
/** * Traditionally, we would render a 'decision' page here (i.e. a page like * '<application name> is requesting access to your account, do you want * to allow this?'), but we handle this internally so don't render anything. * Instead, simply send the response. */ server.decision({ loadTransaction: false }, (serverReq, callback) => { let response = ''; if (req.query.hasOwnProperty('response')) { response = req.query.response; } callback(null, { allow: true, scope: req.query.scope, response: response, website: req.query.website }); })(req, res, next);
// 注册 授予授权码模式 server.grant(oauth2orize.grant.code(function(client, redirectUri, user, ares, callback) { console.log("code oauth2orize"); console.log(client); var code = new Code({ value: uid(16), redirectUri: redirectUri, userId: client.userId, clientId: client._id }); code.save(function(err) { if (err) { return callback(err); } console.log(code); return callback(null, code.value); }); }));
server.exchange(oauth2orize.exchange.refreshToken(function(client, refreshTokenValue, scope, callback) { RefreshToken.findOne({value: refreshTokenValue, clientId: client._id}, function(err, refreshToken) { if(err) { return callback(err); return callback(null, false); return callback(err); token.save(function(err) { if(err) { return callback(err); refreshToken.save(function(err) { if(err) { return callback(err); callback(null, token.value, refreshToken.value, {expires_in: expirationDate}); }) });
server.exchange(oauth2orize.exchange.code(function(client, code, redirectUri, callback) { Code.findOne({value: code}, function(err, authCode) { if(err) { return callback(err); return callback(null, false); return callback(null, false); return callback(null, false); return callback(err); return callback(err); callback(null, token); }); });
server.serializeClient(function(client, callback) { return callback(null, client._id); });
server.serializeClient(function(client, callback) { return callback(null, client._id); });