A minimal starter for ATProto logins in Astro
at main 692 B view raw
1import type { AstroCookies } from 'astro' 2import { 3 atprotoLoopbackClientMetadata, 4 NodeOAuthClient, 5} from "@atproto/oauth-client-node"; 6import { env } from "./env"; 7import { CookieSessionStore, CookieStateStore } from "./storage"; 8 9export function createOAuthClient(cookies: AstroCookies) { 10 const clientMetadata = atprotoLoopbackClientMetadata( 11 `http://localhost?${new URLSearchParams([ 12 ["redirect_uri", `http://127.0.0.1:${env.PORT}/api/oauth/callback`], 13 ["scope", `atproto transition:generic`], 14 ])}`, 15 ); 16 17 return new NodeOAuthClient({ 18 clientMetadata, 19 stateStore: new CookieStateStore(cookies), 20 sessionStore: new CookieSessionStore(cookies), 21 }); 22}