实现GitHub和Google第三方登录

实现GitHub和Google第三方登录
第三方登录流程图如下:

一、在第三方平台创建OAuth

GitHub:
1.登录GitHub ➡ 右上角个人设置 ➡ 开发者设置

2.OAuth Apps  ➡ 右上角创建新OAuth应用  ➡ 重点填写Authorization callback URL;

Authorization callback URL为流程图中第七步第三方code和state返回的路径,后续前端用于获取系统服务端token

GitHub的Authorization callback URL返回路径没有具体要求,填什么地址,code和state就返到对应的页面

Enable Device Flow(是否启动设备流):

如无法使用web形式授权输入邮箱密码登录,启动设备流可通过其他设备扫码等形式完成授权登录

3.保存Client ID和Client secrets

Google:
1.登录https://console.cloud.google.com ➡ New project ➡ 测试项目信息可随意填写

3. App Information可随意填写  ➡ Audience选择External(外部) ➡ Contact Information填写联系邮箱  ➡  Finish  ➡ createe

4.Audience  ➡ 注意是否是测试阶段,下方Test users可以新增测试Google登录的测试账号;如果状态为已发布不是测试阶段,则不需要新增Test users

5.左上角Navigation menu (.)  ➡ APIs & Services  ➡ Credentials  ➡ 上方新增OAuth client ID

6.Web application  ➡ Authorized JavaScript origins项目主页url  

Authorized redirect URIs为流程图中第七步第三方code和state返回的路径,后续前端用于调后端接口获取系统服务端token

注意:Authorized redirect URIs只能填本地ip或者顶级域名

前端联调时可以填:http://127.0.0.1:xxxx(前端项目端口号)

可以传参,例如:http://127.0.0.1:xxxx?type=google

7.保存Client ID和Client secret

二、第三方授权url拼接逻辑

GitHub:

https://github.com/login/oauth/authorize?client_id=xxxx&state=xxxx&scope=user:email

client_id为OAuth中Client ID;

状态参数state为系统服务器生成,用于防止CSRF攻击

Google:

https://accounts.google.com/o/oauth2/v2/auth?client_id=xxxx&redirect_uri=xxxx&response_type=code&scope=openid+profile+email&state=xxxx

client_id为OAuth中Client ID;

redirect_uri为Google OAuth中填写的Authorized redirect URIs(一定要相同,否则禁止授权)

状态参数state为系统服务器生成,用于防止CSRF攻击

三、根据第三方用户信息code和state获取系统服务器用户token

1.验证code和state;

2.根据code访问第三方平台获取第三方平台token

3.根据第三方平台token获取第三方用户信息

4.根据第三方用户唯一标识查询当前用户是否存在

5.创建/更新用户信息

6.返回系统用户token

Read more

OpenClaw 完整安装与配置文档(包含Minimax/deepseek模型接入、飞书机器人接入)

OpenClaw 完整安装与配置文档 文档说明:本文档适用于 Linux 系统(Debian/Ubuntu 系列),详细梳理 OpenClaw 从基础环境准备、核心程序安装,到模型配置(Minimax/DeepSeek)、飞书渠道对接的全流程,所有交互式配置选项完整呈现,步骤可直接复制执行,适配新手操作。 适用场景:OpenClaw 新手部署、企业内部飞书机器人对接、Minimax/DeepSeek 模型配置 前置说明: 1. 服务器需联网,确保能访问 GitHub、npm、飞书官网; 2. 操作全程使用终端命令行,建议使用远程工具(如 Xshell、Putty)连接服务器; 3. 复制命令时需完整复制,避免遗漏特殊符号; 4. 所有交互式配置选项均完整列出,按文档指引选择即可。 5. 拥有root用户/sudo权限。

By Ne0inhk

FPGA原型验证平台中vivado许可证的动态加载方法

如何让有限的Vivado许可证“跑”得更快?——FPGA原型验证平台中的动态调度实战 你有没有遇到过这种情况:团队里十几个人等着用Vivado做FPGA综合,结果卡在“License not available”上,干瞪眼? 这在大型SoC项目的原型验证阶段太常见了。Xilinx Vivado功能强大,但它的许可证(尤其是支持UltraScale+或AI Engine的高级模块)价格昂贵,企业往往只能采购少量浮动许可。而开发节奏又越来越快,动辄几十个并行任务提交上来,资源争抢成了家常便饭。 传统的做法是“谁先启动谁用”,或者干脆每人绑定一个节点锁定使用。但这两种方式都极不经济——有人开完工具就去开会,许可证白白挂着;有人急需却排不上队,项目进度被拖住。 问题的本质不是“不够用”,而是“不会分”。 今天我们就来聊聊一种已经在实际产线中验证有效的 Vivado许可证动态加载机制 。它不增加硬件投入,也不依赖第三方工具,而是通过 运行时感知 + 精细化调度 ,把每一份许可证的利用率榨到极致。 为什么浮动许可证还是不够用? 先别急着上方案,我们得搞清楚瓶颈到底出在哪。 很多人

By Ne0inhk

Flutter 三方库 angular_bloc 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致响应、工业级的 AngularDart 与 BLoC 协同架构实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 angular_bloc 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致响应、工业级的 AngularDart 与 BLoC 协同架构实战 在鸿蒙(OpenHarmony)系统的桌面级协同(如分布式办公网页版)、后台管理终端或高度复杂的 Web 仪表盘开发中,如何将经典的 BLoC 状态管理应用于 AngularDart 环境?angular_bloc 为开发者提供了一套天衣无缝的组件化连接器。本文将实战演示其在鸿蒙 Web 生态中的深度应用。 前言 什么是 Angular BLoC?它是一套专门为 AngularDart 框架设计的 BLoC 实现。通过指令(Directives)和管道(Pipes),它实现了由于数据流变化触发的 UI

By Ne0inhk

GoView + AI:低代码开发的新革命

快速体验 1. 打开 InsCode(快马)平台 https://www.inscode.net 2. 输入框内输入如下内容: 使用GoView平台创建一个智能数据可视化仪表盘,能够根据用户输入的自然语言描述自动生成对应的图表和交互组件。要求支持多种数据源连接,包括Excel、API和数据库,并具备实时数据更新功能。仪表盘应包含折线图、柱状图和饼图,支持拖拽布局和主题自定义。 3. 点击'项目生成'按钮,等待项目生成完整后预览效果 最近在做一个数据可视化项目时,发现传统开发方式需要写大量重复代码,效率实在不高。后来尝试了GoView这个低代码平台,配合AI辅助开发,整个过程变得轻松多了。分享一下我的实践心得。 1. 自然语言描述生成界面 以前做数据可视化,光是设计图表布局就要花半天时间。现在只需要用自然语言描述需求,比如"创建一个展示近半年销售趋势的折线图,左侧显示销售额,右侧显示增长率",GoView的AI就能自动生成对应的图表框架。系统会智能识别时间字段、数值字段,并给出合理的默认配置。

By Ne0inhk