node.js - 无法在环回上实现 oauth2

标签 node.js oauth oauth-2.0 loopbackjs

我想使用环回实现 oauth2 服务器。我以前使用express 完成过它,它工作得很好,但是使用环回我遇到了一些问题。这是 oauth2orize 的代码: var app = require('../../server/server');//与任何 Node.js 应用程序一样需要 server.js

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);
    });
  })]

当我调用授权端点时,我收到错误: 错误:无法序列化客户端。使用serializeClient()注册序列化函数 但是我已经实现了 server.serializeClient 和 server.deserializeClient 方法

最佳答案

我最近遇到了同样的问题并解决了这个问题(无论如何就我而言)。问题是我的客户端模型没有 id 字段。我有一个 clientId 字段,但似乎 oauth2orize 模块还特别需要一个 id 字段。有点蹩脚,但实现起来并不难。

关于node.js - 无法在环回上实现 oauth2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40460541/

相关文章:

node.js - Express:如何将应用程序实例传递给来自不同文件的路由?

language-agnostic - oAuth 2 服务器端与客户端

java - 无法读取 JSON : Current token (VALUE_STRING) not numeric, 无法使用数值访问器

asp.net - oAuth ASP.NET 成员(member)提供商

azure - 如何向 Azure 上基于 "Resource Owner Password Credentials"B2C 的应用程序注册添加 secret

javascript - 为什么在 Node.js 中使用方法覆盖包来隐藏字段?

javascript - 如何在 JavaScript 中正确引用 Oracle SQL 字符串

node.js - 如何使用 Node.js 列出 Express 应用程序中的所有路径,例如 Rails 应用程序中的 "rake routes"命令?

api - 使用 Facebook Connect 登录/创建帐户时,如何使用我自己网站的 API 进行身份验证?

c# - 桌面应用程序中需要 OAuth 客户端凭据( key + secret ),即使具有有效的 token 凭据