用 Nodejs 实现了一下 JustAuth

用 Nodejs 实现了一下 JustAuth

oauth2 all in one

本项目参考了 Java 项目 JustAuth 的设计,将所有的第三方登录都整合到一个项目中,方便使用。 因为 JustAuth 项目是 Java 项目,Node 项目中没有类似的项目,所以本项目就诞生了。 原项目地址:JustAuth

设计上基本上保持一直,只是将 Java 项目中的代码翻译成了 Node 项目中的代码。做了一些小的改动,比如将 Java 项目中的枚举类型改成了字符串类型,因为 Node 项目中没有枚举类型。

目前支持的第三方登录有:

  • <input disabled="" type="checkbox"> Google
  • <input disabled="" type="checkbox"> Discord
  • <input disabled="" type="checkbox"> Twitter

因为我公司只用到了这两个,其他的第三方登录后续会陆续实现。

项目地址:oauth2-aio

使用方法

安装

npm install oauth2-aio

使用

import {AuthGoogleRequest} from "../src";

const googleAuth = new AuthGoogleRequest({ clientId: “clientId”, clientSecret: “clientSecret”, redirectUri: “redirectUri”, scopes: [] })

const redirectUrl = googleAuth.authorize(‘32412341’) console.log(redirectUrl) // exec(open ${redirectUrl})

const r = await googleAuth.login({ code: ‘code’ }) console.log®


5 回复

Passport.js 就是这类项目


为啥不用 passport.js ?

哈哈哈 我都不知道

好东西啊 ,,必须赞一下。

造轮子前还真是有必要查下是否有已存在的轮子

当然,用 Node.js 实现 JustAuth 的功能涉及多个方面,因为 JustAuth 本身是一个 Java 库,用于简化第三方 OAuth 认证流程。不过,我们可以用 Node.js 和一些第三方库来实现类似的功能。

下面是一个简单的例子,展示如何使用 Node.js 和 axios 库来请求 GitHub 的 OAuth 认证。为了简化,我们假设你已经有一个 GitHub 应用并获取了 client_idclient_secret

首先,安装 axios

npm install axios

然后,创建一个简单的 Node.js 脚本:

const axios = require('axios');
const querystring = require('querystring');

const clientId = 'YOUR_CLIENT_ID';
const clientSecret = 'YOUR_CLIENT_SECRET';
const redirectUri = 'YOUR_REDIRECT_URI';
const code = 'CODE_RECEIVED_FROM_GITHUB_CALLBACK'; // 从 GitHub 回调 URL 获取的授权码

const tokenUrl = `https://github.com/login/oauth/access_token?${querystring.stringify({
  client_id: clientId,
  client_secret: clientSecret,
  redirect_uri: redirectUri,
  code: code,
  grant_type: 'authorization_code'
})}`;

axios.get(tokenUrl)
  .then(response => {
    console.log('Access Token:', response.data.access_token);
  })
  .catch(error => {
    console.error('Error fetching access token:', error);
  });

这个脚本将请求 GitHub 的 OAuth 令牌。你需要将 YOUR_CLIENT_IDYOUR_CLIENT_SECRETYOUR_REDIRECT_URICODE_RECEIVED_FROM_GITHUB_CALLBACK 替换为你的实际值。

请注意,这只是一个简单的例子,实际生产环境中需要考虑更多的安全性、错误处理和用户数据管理等。

回到顶部