Nodejs 人人和微博登录模块的实现

Nodejs 人人和微博登录模块的实现

很好的案例,相同的思路可以扩展到新浪微博,和豆瓣等平台。

7 回复

Nodejs 人人和微博登录模块的实现

在现代Web应用中,用户登录通常不仅仅局限于使用邮箱和密码。许多应用允许用户通过第三方平台(如人人网、微博等)进行快捷登录。这种方式不仅简化了用户的注册流程,还增加了应用的用户体验。

本文将介绍如何在Node.js中实现人人网和微博的登录模块,并提供相应的示例代码。

1. 准备工作

首先,你需要在人人网和微博开发者平台上分别注册并获取对应的App Key和App Secret。

2. 安装依赖

为了方便处理OAuth认证过程,我们可以使用一些现成的库。这里我们使用passportpassport-qq(人人网)以及passport-weibo(微博)库。

npm install express passport passport-qq passport-weibo

3. 配置人人网登录

首先配置人人网登录模块:

const express = require('express');
const passport = require('passport');
const QQStrategy = require('passport-qq').Strategy;

const app = express();

// 设置人人网登录策略
passport.use(new QQStrategy({
    clientID: 'your_qq_app_id',
    clientSecret: 'your_qq_app_secret',
    callbackURL: "http://localhost:3000/auth/qq/callback"
  },
  function(accessToken, refreshToken, profile, done) {
    // 这里处理用户信息
    return done(null, profile);
  }
));

app.get('/auth/qq', 
  passport.authenticate('qq'));

app.get('/auth/qq/callback', 
  passport.authenticate('qq', { failureRedirect: '/login' }),
  function(req, res) {
    // 成功后的跳转
    res.redirect('/');
  });

4. 配置微博登录

接下来配置微博登录模块:

const WeiboStrategy = require('passport-weibo').Strategy;

passport.use(new WeiboStrategy({
    consumerKey: 'your_weibo_app_key',
    consumerSecret: 'your_weibo_app_secret',
    callbackURL: "http://localhost:3000/auth/weibo/callback"
  },
  function(token, tokenSecret, profile, done) {
    // 这里处理用户信息
    return done(null, profile);
  }
));

app.get('/auth/weibo', 
  passport.authenticate('weibo'));

app.get('/auth/weibo/callback', 
  passport.authenticate('weibo', { failureRedirect: '/login' }),
  function(req, res) {
    // 成功后的跳转
    res.redirect('/');
  });

5. 启动服务器

最后,启动你的Express服务器:

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

通过上述步骤,你就可以在Node.js应用中实现人人网和微博的登录功能。这个案例同样适用于其他平台,如豆瓣等,只需相应地调整策略配置即可。

希望这些代码对你有所帮助!


验证什么的…用passport 最爽了…

https://github.com/xinbenlv/passport-renren

试试这个,包括登录和其它api调用,https://github.com/sumory/social_oauth

你这个是 基于oatuh2 的API使用,LZ的是模拟登录,不一样的。

可以弄个taobao,豆瓣的吗?

楼主是模拟form登陆

要实现Node.js下的人人网和新浪微博登录模块,你需要使用各自的API来完成用户身份验证。这里以人人网和新浪微博为例,分别介绍如何实现登录模块。

人人网登录模块

人人网提供OAuth 2.0认证接口,你可以使用requestaxios库发起网络请求。以下是一个简单的实现步骤:

  1. 注册应用:首先需要在人人网上注册你的应用,获取appKeysecretKey
  2. 授权URL:构建一个授权URL让用户进行身份验证。
  3. 获取Access Token:通过回调URL获取用户的Access Token。
  4. 调用API:使用Access Token调用人人网API获取用户信息。
const express = require('express');
const request = require('request');
const app = express();

//人人网配置信息
const renrenAppKey = 'your_renren_app_key';
const renrenSecret = 'your_renren_secret';
const redirectUri = encodeURIComponent('http://localhost:3000/renren/callback');

// 授权URL
const authUrl = `https://graph.renren.com/oauth/authorize?client_id=${renrenAppKey}&redirect_uri=${redirectUri}`;

app.get('/renren', (req, res) => {
    res.redirect(authUrl);
});

app.get('/renren/callback', (req, res) => {
    const code = req.query.code;
    const tokenUrl = `https://graph.renren.com/oauth/token?client_id=${renrenAppKey}&client_secret=${renrenSecret}&grant_type=authorization_code&redirect_uri=${redirectUri}&code=${code}`;
    
    request(tokenUrl, { json: true }, (err, resp, body) => {
        if (err) return console.log(err);
        const accessToken = body.access_token;

        // 使用access token获取用户信息
        const userInfoUrl = `https://api.renren.com/v2/people/me?access_token=${accessToken}`;
        request(userInfoUrl, { json: true }, (err, resp, body) => {
            if (err) return console.log(err);
            console.log(body);
            res.send('登录成功!');
        });
    });
});

app.listen(3000, () => console.log('Server running on port 3000'));

新浪微博登录模块

新浪微博也提供了OAuth 2.0认证接口,实现方法与人人网类似。主要步骤包括:

  1. 注册应用:在新浪开放平台注册你的应用并获取appKeyappSecret
  2. 授权URL:构造授权URL引导用户跳转。
  3. 获取Access Token:从回调URL中获取Access Token。
  4. 调用API:使用Access Token获取用户信息。
const weiboAppKey = 'your_weibo_app_key';
const weiboSecret = 'your_weibo_secret';
const weiboRedirectUri = encodeURIComponent('http://localhost:3000/weibo/callback');

// 授权URL
const weiboAuthUrl = `https://api.weibo.com/oauth2/authorize?client_id=${weiboAppKey}&response_type=code&redirect_uri=${weiboRedirectUri}`;

app.get('/weibo', (req, res) => {
    res.redirect(weiboAuthUrl);
});

app.get('/weibo/callback', (req, res) => {
    const code = req.query.code;
    const tokenUrl = `https://api.weibo.com/oauth2/access_token?client_id=${weiboAppKey}&client_secret=${weiboSecret}&grant_type=authorization_code&redirect_uri=${weiboRedirectUri}&code=${code}`;
    
    request.post(tokenUrl, { json: true }, (err, resp, body) => {
        if (err) return console.log(err);
        const accessToken = body.access_token;

        // 使用access token获取用户信息
        const userInfoUrl = `https://api.weibo.com/2/users/show.json?access_token=${accessToken}&uid=${body.uid}`;
        request(userInfoUrl, { json: true }, (err, resp, body) => {
            if (err) return console.log(err);
            console.log(body);
            res.send('登录成功!');
        });
    });
});

以上是人人网和新浪微博登录模块的基本实现方式,你可以根据实际情况进行调整和优化。

回到顶部