Passport-LinkedIn 项目教程
1. 项目的目录结构及介绍
passport-linkedin/
├── lib/
│ ├── index.js
│ ├── strategy.js
├── test/
│ ├── strategy.js
├── .gitignore
├── .npmignore
├── .travis.yml
├── LICENSE
├── README.md
├── package.json
└── examples/
├── login/
│ ├── app.js
│ ├── package.json
│ └── views/
│ ├── layout.ejs
│ └── login.ejs
lib/
:包含项目的主要逻辑文件,如index.js
和strategy.js
。test/
:包含项目的测试文件。examples/
:包含示例项目,如login/
目录下的示例应用。.gitignore
:指定 Git 忽略的文件和目录。.npmignore
:指定 npm 忽略的文件和目录。.travis.yml
:Travis CI 配置文件。LICENSE
:项目许可证。README.md
:项目说明文档。package.json
:项目依赖和脚本配置。
2. 项目的启动文件介绍
项目的启动文件通常位于 examples/login/app.js
。以下是该文件的简要介绍:
var express = require('express');
var passport = require('passport');
var LinkedInStrategy = require('passport-linkedin').Strategy;
var app = express();
passport.use(new LinkedInStrategy({
consumerKey: LINKEDIN_API_KEY,
consumerSecret: LINKEDIN_SECRET_KEY,
callbackURL: "http://127.0.0.1:3000/auth/linkedin/callback"
}, function(token, tokenSecret, profile, done) {
User.findOrCreate({ linkedinId: profile.id }, function (err, user) {
return done(err, user);
});
}));
app.get('/auth/linkedin', passport.authenticate('linkedin'));
app.get('/auth/linkedin/callback', passport.authenticate('linkedin', {
successRedirect: '/',
failureRedirect: '/login'
}));
app.listen(3000);
- 引入必要的模块:
express
、passport
和passport-linkedin
。 - 配置 LinkedIn 认证策略。
- 定义路由处理 LinkedIn 认证请求和回调。
- 启动 Express 服务器。
3. 项目的配置文件介绍
项目的配置文件主要是 package.json
,以下是该文件的简要介绍:
{
"name": "passport-linkedin",
"version": "1.0.0",
"description": "LinkedIn authentication strategy for Passport.",
"keywords": [
"passport",
"linkedin",
"auth",
"authn",
"authentication",
"identity"
],
"author": {
"name": "Jared Hanson",
"email": "jaredhanson@gmail.com",
"url": "http://www.jaredhanson.net/"
},
"repository": {
"type": "git",
"url": "git://github.com/jaredhanson/passport-linkedin.git"
},
"bugs": {
"url": "http://github.com/jaredhanson/passport-linkedin/issues"
},
"license": "MIT",
"main": "./lib",
"dependencies": {
"passport-oauth1": "1.x.x"
},
"devDependencies": {
"mocha": "1.x.x",
"chai": "1.x.x"
},
"scripts": {
"test": "mocha --reporter spec test/*.test.js"
}
}
name
:项目名称。version
:项目版本。description
:项目描述。keywords
:项目关键词。author
:项目作者信息。repository
:项目仓库地址。bugs
:项目问题追踪地址。license
:项目许可证