Login with ChatGPT
Vytvořeno: 15.7.2026 | Aktualizováno: 15.07.2026 23:28
Login with ChatGPT je TypeScript SDK pro webové aplikace, které chtějí uživatele přihlásit jejich účtem ChatGPT a používat jejich vlastní předplatné pro AI požadavky. Hodí se například pro interní AI nástroj, kde uživatel nepotřebuje zadávat OpenAI API klíč.
Co projekt řeší
Projekt není běžný identity provider typu „Přihlásit přes Google“. Po autorizaci může aplikace přes backend využívat AI požadavky na účet uživatele; spotřebovává tedy jeho dostupný tarif a limity.
SDK obsahuje několik balíčků:
@opencoredev/loginwithchatgpt-core– OAuth, obnovu tokenů a zjištění dostupných modelů.@opencoredev/loginwithchatgpt-server– serverový handler pro přihlášení, session, odhlášení, seznam modelů a proxy AI požadavků.@opencoredev/loginwithchatgpt-react– React komponentu<LoginWithChatGPT />a hook.@opencoredev/loginwithchatgpt-ai– provider pro Vercel AI SDK.
Princip fungování
Přihlašovací komponenta nejdřív zobrazí uživateli povinný souhlas. Potom otevře ověření u OpenAI a po dokončení vytvoří aplikační session. Prohlížeč dostane pouze HttpOnly cookie; přístupové a obnovovací tokeny zůstávají v session vrstvě serveru.
Aplikace volá vlastní endpoint, například /api/chatgpt/responses. Serverový handler z cookie načte session, vloží přihlašovací údaje a požadavek odešle na podporované ChatGPT-backed Codex endpointy. Model není vhodné volit napevno: dostupnost závisí na účtu a jeho plánu, proto je potřeba nejdřív načíst seznam modelů přes endpoint /models.
Základní integrace
Postup vychází z quickstartu projektu.
Instalace
npm install @opencoredev/loginwithchatgpt-server \ @opencoredev/loginwithchatgpt-react \ @opencoredev/loginwithchatgpt-ai ai @ai-sdk/openai
Tajemství session
Tajemství podepisuje session cookie a šifruje tokeny při ukládání. Musí být stabilní; při použití dočasně generované hodnoty restart aplikace odhlásí všechny uživatele.
openssl rand -hex 32
Hodnotu je potřeba uložit jako proměnnou prostředí LWC_SECRET.
Handler v Next.js
import { createChatGPTHandler } from "@opencoredev/loginwithchatgpt-server";
const auth = createChatGPTHandler({
secret: process.env.LWC_SECRET,
responsesProxy: {
allowedModels: ["gpt-5.5", "gpt-5.4-mini"],
},
});
export const GET = (request: Request) => auth.handler(request);
export const POST = (request: Request) => auth.handler(request);
Handler se obvykle připojí na cestu /api/chatgpt/*. Seznam v allowedModels má obsahovat pouze modely, které aplikace skutečně nabízí.
Přihlašovací tlačítko
"use client";
import { LoginWithChatGPT } from "@opencoredev/loginwithchatgpt-react";
export function SignIn() {
return (
<LoginWithChatGPT
consent={{ appName: "Interní AI nástroj" }}
onAuthenticated={() => console.log("ChatGPT připojen")}
/>
);
}
Bezpečnost a provoz
Podle bezpečnostního modelu projektu je tento typ přihlášení potřeba chápat jako infrastrukturu citlivou na spotřebu. Uživatel musí před autorizací vědět, že jeho požadavky využívají jeho ChatGPT plán a že prompty i přílohy procházejí serverem aplikace.
Výchozí konfigurace drží tokeny mimo běžný aplikační kód a omezuje proxy na 30 požadavků za minutu pro jednu session. Nechrání však uživatele před provozovatelem aplikace: ten ovládá serverový kód a může přes podporované AI požadavky spotřebovávat uživatelův plán. Aplikace také může z ID tokenu získat profilové údaje, například e-mail, jméno a plán.
Pro produkční nasazení je podle produkčního checklistu potřeba zejména:
- použít HTTPS a stabilní
LWC_SECRET; - nahradit výchozí paměťové úložiště sdíleným session storem, například Redisem nebo databází;
- omezit modely, délku promptů, velikost příloh a rychlost požadavků;
- neexportovat raw tokeny přes volbu
dangerouslyAllowTokenExport; - mít viditelné odhlášení, které smaže serverovou session;
- logovat metadata požadavků pro řešení zneužití, ne jejich obsah.