通过 loopback-passport 进行社交登录身份验证

Social Logins authentication through loopback-passport

我开始在 loopback api 上站稳脚跟。目前我正在尝试通过社交登录为我的应用程序集成身份验证。我找到了三个页面来说明如何完成此操作,但它们的显示方式都有些不同且不清楚:项目的 github-loopback-component-passport & npmjs-loopback-component-passport & github-loopback-component-passport-example. I am bit confused as to what is the most up to date process. Can anyone shed some light in how to best integrate social login with loopback? Also, how to test it for routes that may require access tokens? Here is the Github Repo

当前依赖关系

"dependencies": {
    "compression": "^1.0.3",
    "cors": "^2.5.2",
    "lodash": "^3.10.1",
    "loopback": "^2.26.2",
    "loopback-boot": "^2.6.5",
    "loopback-component-explorer": "^2.1.0",
    "loopback-connector-mysql": "^2.2.0",
    "loopback-datasource-juggler": "^2.19.0",
    "loopback-stormpath": "0.0.1",
    "serve-favicon": "^2.0.1",
    "passport": "^0.3.2",
    "underscore": "^1.8.2"
  }

根据此处提供的文档 -

https://www.npmjs.com/package/loopback-passport

您只需安装 loopback-passport npm 模块并将以下内容添加到您的项目中 -

1) providers.json - 这将为您要使用的第三方身份验证提供商定义配置,例如 facebook、google plus 等。 2) 在你的 server.js 中定义护照默认配置,如 link 所示 -

var loopback = require('loopback');
var path = require('path');
var app = module.exports = loopback();

// Create an instance of PassportConfigurator with the app instance 
var PassportConfigurator = require('loopback-passport').PassportConfigurator;
var passportConfigurator = new PassportConfigurator(app);

app.boot(__dirname);

...

// Enable http session 
app.use(loopback.session({ secret: 'keyboard cat' }));

// Load the provider configurations 
var config = {};
try {
  config = require('./providers.json');
} catch(err) {
  console.error('Please configure your passport strategy in `providers.json`.');
  console.error('Copy `providers.json.template` to `providers.json` and replace the clientID/clientSecret values with your own.');
  process.exit(1);
}

// Initialize passport 
passportConfigurator.init();

// Set up related models 
passportConfigurator.setupModels({
  userModel: app.models.user,
  userIdentityModel: app.models.userIdentity,
  userCredentialModel: app.models.userCredential
});

// Configure passport strategies for third party auth providers 
for(var s in config) {
  var c = config[s];
  c.session = c.session !== false;
  passportConfigurator.configureProvider(s, c);
}

在此之后,您可以查看提供的不同客户端 sdk 来发出登录或社交身份验证请求,并将它们用于登录和注册用户。