本地OAuth测试终极指南:emulate如何让你零凭据跑通GitHub、Google、Apple登录流程
【免费下载链接】emulateLocal API emulation for CI and no-network sandboxes项目地址https://gitcode.com/gh_mirrors/emul/emulate点击查看免费下载想测试「登录」功能却不想申请任何 API 密钥本文带你认识本地 OAuth 测试神器emulate——它在你的电脑上启动一套完整有状态的模拟服务让你零凭据、离线跑通 GitHub、Google、Apple 等主流登录流程告别真实账号与网络依赖。为什么你需要本地OAuth测试开发「用 GitHub 登录」这类功能时你通常要面对三座大山申请门槛每个平台都要注册 OAuth App填写回调地址、保管密钥网络依赖CI 或无网沙箱里根本连不上真实身份提供商流程难复现真实登录受验证码、二次认证干扰测试很不稳定。emulate的思路很直接不写 mock而是提供一套「生产级保真」的本地替代服务。它完整实现了各平台的 OAuth 授权端点、令牌端点、用户信息端点甚至提供了一个可交互的用户选择器页面——和真实平台登录时选账号的体验一致。项目定位一句话概括Local API emulation for CI and no-network sandboxes。零配置快速启动本地OAuth模拟整个流程从一条命令开始npx emulate无需任何配置文件所有服务以默认端口自动启动。与登录相关的服务包括服务默认地址OAuth 能力GitHubhttp://localhost:4001授权码流程 用户选择器Googlehttp://localhost:4002OAuth 2.0 / OIDCRS256 ID tokenApplehttp://localhost:4004授权码 PKCERS256 ID tokenMicrosofthttp://localhost:4005授权码 PKCE、客户端凭据也可以只启动需要的服务例如npx emulate --service github,google,apple。一键运行OAuth登录完整示例仓库内置了一个 Next.js 示例同时接入 GitHub、Google、Vercel 三家提供商真实账号、API Key 一概不需要。运行方式见 examples/oauth/README.mdcd examples/oauth npx emulate --seed emulate.config.yaml # 终端1启动模拟器 pnpm dev # 终端2启动示例应用打开http://localhost:3000点击任意提供商按钮即可登录。整个跳转与回调由两个路由完成发起授权examples/oauth/src/app/api/auth/[provider]/route.ts —— 拼装client_id、redirect_uri、state后重定向到模拟器处理回调examples/oauth/src/app/api/auth/callback/[provider]/route.ts —— 用授权码换取令牌再拉取用户信息并存入会话 Cookie。深入理解本地OAuth登录流程五步走emulate 把真实 OAuth 流程 1:1 复刻到了本地重定向应用把浏览器发到模拟器的授权端点如 GitHub 的/login/oauth/authorize选用户模拟器展示用户选择器页面从种子数据里挑一个用户「登录」回跳模拟器携带code重定向回你的redirect_uri换令牌你的后端用codeclient_id/client_secret请求令牌端点拿到access_tokenGoogle/Apple 还会返回 RS256 签名的 ID token并可通过 JWKS 端点验签建会话拉取用户信息登录完成。各提供商的 OAuth 路由实现可以参考源码packages/emulators/github/src/routes/oauth.ts、packages/emulators/google/src/routes/oauth.ts、packages/emulators/apple/src/routes/oauth.ts。种子配置如何预置测试用户与客户端想让选择器里出现你自定义的用户在种子配置里声明即可。仓库根目录提供了完整示例 emulate.config.example.yamlgithub.users预置octocat、developer等测试账号github.oauth_apps预置client_id、client_secret和允许的redirect_uris实现和真实平台一样的严格客户端校验。Google 和 Apple 的写法类似google.oauth_clients/apple.oauth_clients完整字段见 emulate.config.example.yaml。一个贴心细节不配置oauth_apps时模拟器会跳过client_id、client_secret、redirect_uri校验意味着你的授权库随便填一个占位密钥就能跑通真正做到了「零凭据」。可重置的状态与Inspector调试面板emulate 强调Fully stateful完整有状态创建的仓库、发出的消息都会真实留存而不是每个请求都返回假数据。同时每个服务都自带 Inspector 调试面板可直接查看请求、状态或一键重置回初始种子——对反复测试登录流程特别友好。测试场景还能通过 packages/emulators/core/src/ 核心包在 Vitest/Jest 中以createEmulator编程式启动、reset()恢复详见根目录 README.md。嵌入你的Next.js或Nuxt应用本地开发时回调地址http://localhost:3000/api/auth/callback/...是固定的但部署到预览环境后回调地址会随部署变化。emulate 提供框架适配器把模拟器直接嵌入应用同源回调地址永远稳定Next.jsnpm install emulators/adapter-next emulators/github emulators/google再建一个app/emulate/[...path]/route.ts捕获路由Nuxtnpm install emulators/adapter-nuxt在server/routes/emulate/[...path].ts中挂载。接入步骤与 Auth.js 配置示例见 packages/emulators/adapter-next/README.md 与 examples/nextjs-embedded/ 示例工程。总结把OAuth登录测试搬回本地 回顾一下 emulate 带来的价值零凭据不申请、不保管任何真实密钥npx emulate一条命令起步全离线CI 和无网沙箱中一样跑通完整登录流程高保真授权码、PKCE、ID token 验签、严格客户端校验都与真实平台对齐可复现有状态 一键重置测试永远稳定。从 examples/oauth/ 示例开始体验或阅读 apps/web/app/docs/authentication/page.mdx 了解更多认证细节。祝你的登录功能测试从此告别「等验证码」赞分享【免费下载链接】emulateLocal API emulation for CI and no-network sandboxes项目地址https://gitcode.com/gh_mirrors/emul/emulate点击查看免费下载相关推荐大麦抢票脚本四步跑通从克隆仓库到开售提交订单大麦抢票脚本四步跑通从克隆仓库到开售提交订单 开票前 10 秒你还在手动刷新页面时ticket purchase 已经在替你完成点击。它基于 SeleniuGUI 自动化RPA终极指南如何用react-oauth/google快速实现React OAuth2登录终极指南如何用react oauth/google快速实现React OAuth2登录 想要为你的React应用添加Google登录功能react oa前端认证鉴权如何快速上手Nelua从安装到第一个Hello World程序的完整指南如何快速上手Nelua从安装到第一个Hello World程序的完整指南 Nelua是一种受Lua启发的轻量级、高效、静态类型且支持元编程的系统编程语言它可创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

MCP HTTP 传输详解:比 SSE 简单,但有一个意外的坑|TaoToken 统一 Key 通道实测

MCP HTTP 传输详解:比 SSE 简单,但有一个意外的坑|TaoToken 统一 Key 通道实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 14:04:47 阅读更多 →
小程序预约系统开发全指南:从数据库设计到上线部署

小程序预约系统开发全指南:从数据库设计到上线部署

简介:这是一份面向Java与小程序开发方向毕业设计、课程设计学生的理发店预约系统完整源码包。系统围绕理发店日常运营场景,后台包含预约信息管理、理发信息管理、会员信息管理和系统设计管理,小程序端则提供首页、理发项目、理发师、我的等模…

2026/10/10 14:04:47 阅读更多 →
Spring Boot城郊蔬菜大棚管理与销售系统开发全解析

Spring Boot城郊蔬菜大棚管理与销售系统开发全解析

接手过不少这种项目,一听到“基于Spring Boot的城郊蔬菜大棚管理与销售系统”,我先跟你说句实在话:这活儿看着像个毕业设计,实际上是个特别典型的“管理交易”全栈小项目。一边是大棚里的环境数据、种植记录,另一边是商…

2026/10/10 14:03:46 阅读更多 →

最新新闻

统一登录与单点登录实战:网关与认证中心的搭建全解

统一登录与单点登录实战:网关与认证中心的搭建全解

这段时间我一直在折腾一件事:把我们内部几个各自为战的业务系统,统一到一个登录入口底下。项目代号倒是很形象,sward 负责守门,soular 负责认人。说白了,sward 是一个网关层,soular 是一个身份认证中心&…

2026/10/10 14:52:58 阅读更多 →
打印机驱动下载安装完整指南:从官网获取到故障排查

打印机驱动下载安装完整指南:从官网获取到故障排查

1. 打印机驱动安装这件事,为什么值得单独写一篇完整指南打印机驱动下载安装,听起来像是电脑入门级别的操作,但实际工作中我见过太多人在这上面翻车。有人下载了错误的驱动版本导致打印机频繁脱机,有人装完驱动后扫描功能死活调不出…

2026/10/10 14:52:58 阅读更多 →
基于SpringBoot+Vue+MySQL的船舶监造管理系统实战解析

基于SpringBoot+Vue+MySQL的船舶监造管理系统实战解析

做船舶监造的人肯定都懂,监造不是坐在办公室看看图纸就行,真正业务一铺开,报验单、现场见证、NCR整改闭环、试验计划、图纸送审,每个环节都是需要“有人跟、有记录、有闭环”的。早几年我在船厂和监造组干活时,全靠Exc…

2026/10/10 14:52:58 阅读更多 →
Zen Cart PayPal跳转插件:解决掉单与IPN异步通知问题

Zen Cart PayPal跳转插件:解决掉单与IPN异步通知问题

简介:面向ZenCart商城的PayPal跳转插件,用于打通ZenCart与PayPal支付接口,实现用户在付款时从商店页面到支付网关再返回结果页的完整跳转流程,适合使用ZenCart开展跨境或外贸电商的商家、开发者及运维人员。该插件压缩包共24个文件…

2026/10/10 14:52:58 阅读更多 →
线程池线程数配置实战:CPU密集型与IO密集型任务调优策略

线程池线程数配置实战:CPU密集型与IO密集型任务调优策略

1. 先分清任务在“算”还是在“等”——这是所有配置的起点1.1 CPU 密集型和 IO 密集型的本质差异多线程编程里有一个被问得最多的问题:线程池到底配多少个线程?我几乎每一次都会先反问他一句:你的任务是 CPU 密集型还是 IO 密集型&#xff1…

2026/10/10 14:52:57 阅读更多 →
Windows下OSGeo4W安装PDAL避坑指南:从环境配置到LAZ v1.4实测

Windows下OSGeo4W安装PDAL避坑指南:从环境配置到LAZ v1.4实测

简介:本资源是面向GIS开发者、遥感工程师及三维点云处理从业者的PDAL库离线安装包,专为解决Windows环境下因网络限制导致OSGeo4W官网下载PDAL失败或缓慢的痛点。压缩包完整封装了OSGeo4W64 64位安装环境及PDAL核心组件,并预集成CloudCompare兼…

2026/10/10 14:51:56 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →