订阅登录的技术背景与开源依据

OpenAI、Hermes等新一代智能体产品有一个显著的共同点:它们都支持用户使用现有的ChatGPT订阅账号进行登录,从而免去了单独充值API Key的费用,这种体验对于用户而言非常友好。博主通过深入分析源代码发现,实现这一功能的技术门槛其实比大众想象的要低得多。为了验证这一结论,博主参考了两个关键的开源项目:一个是OpenAI官方开源的命令行工具Codex CLI,另一个是OpenClaw底层依赖的PyMono代码仓库。这两个项目中包含了PyAI开发包,其使用的ChatGPT订阅账号登录机制与Codex CLI完全一致,这为开发者提供了一套现成的、可复用的官方登录流程教材。

“我一直想知道它是怎么实现的,所以了解了一下源代码,结论嘛很简单,技术门槛比咱们想象的要低。”

在依赖关系上,个人AI助理项目OpenClaw在package.json中明确约定了依赖PyAI包,这是集成AI能力的核心开发包。而PyAI包来源于PyMono项目,该项目包含了一系列AI应用开发所需的工具包,其中就实现了ChatGPT订阅账号的登录功能。通过比对PyMono和Codex CLI的代码,可以确认两者在登录机制上是完全相同的。这意味着,开发者完全可以参考OpenClaw和Hermes的实现方式,利用Codex CLI的完整开源实现,将这套非黑科技的官方登录流程应用到自己的AI应用中。

订阅模式对独立开发者的核心价值

订阅登录模式之所以值得推广,核心在于它改变了独立开发者的成本结构。在传统的API Key模式下,调用模型是按照Token数量计费的,使用频率越高,账单支出就越大。对于高频使用的场景,这种按量付费的模式往往会让开发者面临高昂的成本压力,许多用户都有过账单超支的体会。相比之下,订阅登录模式采用包月或包年的方式,对于高频用户而言,单次使用的平均成本显著降低,这使得订阅制成为更具性价比的选择。

“在API Key的模式下,当发送请求调用模型时,是按照 token 计费,使用越多成本越高。在高频使用的场景下,账单还是蛮高的。”

目前,绝大多数模型服务商都提供了订阅制作为选项,个人用户也倾向于使用自己偏好的服务商订阅。如果直接使用API Key驱动智能体,高昂的费用往往让个人开发者难以承受,因此绝大多数情况下,使用订阅模式是更现实的选择。OpenClaw和Hermes等智能体产品之所以采用订阅登录,正是基于这一经济逻辑。通过复用用户的现有订阅,开发者无需承担额外的API费用,从而降低了应用的使用门槛和运营成本,这也是该技术被广泛采用的根本动力。

OAuth 2.0 订阅登录的底层原理

订阅登录的底层原理遵循标准的 OAuth 2.0 工作流程,整个流程分为几个关键环节。首先,用户在应用中点击登录,跳转到OpenAI的授权页面,用户完成授权后,系统返回一个授权码。以OpenClaw为例,应用中会有一个中间服务器,携带这个授权码请求Token。服务器调用OpenAI的Token接口,通过交换授权码获得访问令牌(Access Token)。基于此,应用可以获取用户信息并建立登录状态。

“它跟任何一个 OAuth 二点零工作流都差不多。首先,当然用户是在应用中点击登录,跳转到授权页,用户授权,返回授权码。”

在整个流程中,应用服务器无法直接接触到用户的密码,只能获取到Token,这保障了安全性。对于用户而言,体验非常流畅,可以直接使用已有的ChatGPT Plus订阅账号,无需额外注册。值得注意的是,OpenAI Codex等产品中内置了一个HTTP服务器,专门用于接收回调。这个中间服务器在OAuth流程中扮演关键角色,它负责接收来自OpenAI的回调,提取授权码,并完成后续的Token交换。这一机制确保了登录过程的自动化和安全性,是订阅登录能够顺利运行的基础。

移动端集成挑战与RN AI Kit解决方案

为了将ChatGPT订阅登录集成到移动设备中,博主开发了一个名为 RN AI Kit 的工具包。该工具包旨在解决移动端集成AI能力的难题,主要包含三个核心开发包:首先是OSS包,用于管理API Key和Token的刷新及安全存储,参考了PyMono的实现机制;其次是ChatGPT Provider包,基于Vercel AI SDK构建,提供了类似Codex和OpenClaw的ChatGPT登录功能;最后是Sessions包,用于管理会话。这套组合拳帮助开发者在React Native应用中轻松集成订阅登录。

“为了实现它呢,我做了一个小小的工具包 R N A I Kit。我会将这个代码仓库链接呢放在视频的描述中,感兴趣的朋友呢可以来参考一下。”

RN AI Kit的核心依赖是Vercel AI SDK,该SDK提供了大模型集成和Agent开发所需的组件,如stream text和generate text等接口。然而,原生Vercel AI SDK并未直接支持ChatGPT订阅登录,因此博主在ChatGPT Provider包中封装了这一功能。此外,为了适配移动应用开发,RN AI Kit还添加了Expo Fetch工具的支持。通过实现一个Auth Manager,开发者可以通过login或set API Key接口灵活配置登录方式,从而在移动端实现与Web端一致的订阅登录体验。

移动端OAuth回调的特殊处理机制

在移动设备中集成OAuth流程面临一个特殊挑战:OpenAI ChatGPT OAuth默认使用localhost:1455作为回调URL,这在移动环境中难以直接处理。在Codex或OpenClaw等桌面应用中,内置的HTTP服务器可以监听localhost地址,自动接收回调并获取授权码。但在移动设备中,无法可靠地启动本地HTTP服务器来接收回调,导致标准的OAuth流程受阻。

“原因在于,OpenAI 的 ChatGPT On-Off 会使用一个 localhost 一四五五的回调 URL 来接收 OpenAI 返回的 code。不过,在目前的移动应用中... 在移动设备中似乎没法可靠的处理这个回调”。

为了解决这一问题,RN AI Kit采用了一种手动复制回调URL的替代方案。当用户在移动端浏览器中完成登录后,页面会跳转到localhost地址并显示无法访问。此时,用户需要手动复制浏览器地址栏中的完整URL,然后粘贴回应用中。应用通过解析这段URL,提取出其中的授权码(code),进而完成Token交换。虽然这一过程不如自动化流程优雅,但在当前技术限制下,它是实现移动端订阅登录的有效途径。

实战演示:从登录到生图的完整链路

博主通过一个名为Ola的示例应用演示了完整的登录流程。在iOS模拟器中启动应用后,用户点击右上角菜单进入设置页面,选择ChatGPT OpenAI Signing进行登录。此时,应用会调用OpenAI的授权页面,由于使用的是与Codex CLI相同的客户端ID,登录提示中会显示“Codex will not receive your chat history”等信息。用户点击Continue完成授权后,浏览器跳转到无法加载的localhost页面。

“点击 Continue 完成登录,现在就来到了一个无法加载的页面,这也是刚才我们所说的毁掉的页面。我们现在可以做的呢,就是将这个链接复制,然后关闭浏览器。”

随后,应用弹出请求,提示用户粘贴之前复制的URL。粘贴并提交后,应用成功解析出Token,显示“已连接”。此时,用户即可回到聊天界面,使用ChatGPT订阅账号进行对话。博主还演示了集成GPT Image 2模型的生图功能,通过输入提示词,应用成功生成了图片,验证了端到端的流程畅通。这一演示证明了通过RN AI Kit,开发者可以在移动端顺利实现ChatGPT订阅登录及后续的高级功能调用

整体架构总结与未来展望

整个订阅登录到对话的完整链路包括:OAuth登录、Token安全存储、Provider封装以及聊天UI构建。在典型AI应用中,开发者首先通过浏览器访问OpenAI授权页面,获取回调URL中的授权码。在移动端,通过手动复制URL的方式获取授权码,进而换取Access Token和Refresh Token,并将其存储在安全存储中。RN AI Kit中的ChatGPT Provider封装了这一过程,使开发者能够基于Vercel AI SDK无缝调用订阅用户的API。

“关键思路还在于将OAuth Token呢串联到咱们的AI调用链路中。这套方案广泛的适用于Web应用、桌面应用的开发。”

博主总结道,订阅登录不仅降低了开发者的成本,还提升了用户体验。RN AI Kit工具包为开发者提供了一套完整的解决方案,涵盖了从登录管理到会话控制的各个环节。未来,博主计划分享如何基于订阅登录,进一步集成GPT Image 2的生图能力,探索ChatGPT后端API的特殊用法。这套方案不仅适用于移动端,也广泛适用于Web和桌面应用,为AI应用的开发提供了新的思路。