docs: fix callback validation for third-party authentication (#14109)

* docs: fix callback validation for third-party authentication

* address comment
This commit is contained in:
Shahed Nasser
2025-11-24 15:43:05 +02:00
committed by GitHub
parent b81f958d41
commit 22ca22a2f0
11 changed files with 272 additions and 166 deletions

View File

@@ -26,6 +26,7 @@
* label: Google Provider
* source: |-
* import Medusa from "@medusajs/js-sdk"
* import { decodeToken } from "react-jwt"
*
* export const sdk = new Medusa({
* baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
@@ -35,7 +36,7 @@
* },
* })
*
* await sdk.auth.callback(
* const token = await sdk.auth.callback(
* "user",
* "google",
* {
@@ -43,23 +44,33 @@
* state: "456"
* }
* )
*
* // all subsequent requests will use the token in the header
* sdk.admin.invite.accept(
* {
* email: "user@gmail.com",
* first_name: "John",
* last_name: "Smith",
* invite_token: "12345..."
* },
* )
* .then(({ user }) => {
* console.log(user)
* })
*
* const decodedToken = decodeToken(token) as { actor_id: string, user_metadata: Record<string, unknown> }
*
* const shouldCreateUser = decodedToken.actor_id === ""
*
* if (shouldCreateUser) {
* const user = await sdk.admin.invite.accept(
* {
* email: decodedToken.user_metadata.email as string,
* first_name: "John",
* last_name: "Smith",
* invite_token: "12345..."
* },
* )
*
* // refresh auth token
* await sdk.auth.refresh()
* // all subsequent requests will use the new token in the header
* } else {
* // User already exists and is authenticated
* }
* - lang: TypeScript
* label: GitHub Provider
* source: |-
* import Medusa from "@medusajs/js-sdk"
* import { decodeToken } from "react-jwt"
*
* export const sdk = new Medusa({
* baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
@@ -69,27 +80,36 @@
* },
* })
*
* const authToken = await sdk.auth.callback(
* const token = await sdk.auth.callback(
* "user",
* "google",
* "github",
* {
* code: "123",
* state: "456"
* }
* )
*
* // all subsequent requests will use the token in the header
* sdk.admin.invite.accept(
* {
* email: "user@gmail.com",
* first_name: "John",
* last_name: "Smith",
* invite_token: "12345..."
* },
* )
* .then(({ user }) => {
* console.log(user)
* })
*
* const decodedToken = decodeToken(token) as { actor_id: string, user_metadata: Record<string, unknown> }
*
* const shouldCreateUser = decodedToken.actor_id === ""
*
* if (shouldCreateUser) {
* const user = await sdk.admin.invite.accept(
* {
* email: decodedToken.user_metadata.email as string,
* first_name: "John",
* last_name: "Smith",
* invite_token: "12345..."
* },
* )
*
* // refresh auth token
* await sdk.auth.refresh()
* // all subsequent requests will use the new token in the header
* } else {
* // User already exists and is authenticated
* }
* tags:
* - Auth
* responses:

View File

@@ -25,6 +25,7 @@
* label: Google Provider
* source: |-
* import Medusa from "@medusajs/js-sdk"
* import { decodeToken } from "react-jwt"
*
* let MEDUSA_BACKEND_URL = "http://localhost:9000"
*
@@ -38,7 +39,7 @@
* publishableKey: process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY,
* })
*
* await sdk.auth.callback(
* const token = await sdk.auth.callback(
* "customer",
* "google",
* {
@@ -46,16 +47,28 @@
* state: "456"
* }
* )
*
* // all subsequent requests will use the token in the header
* const { customer } = await sdk.store.customer.create({
* email: "customer@gmail.com",
* password: "supersecret"
* })
*
* const decodedToken = decodeToken(token) as { actor_id: string, user_metadata: Record<string, unknown> }
*
* const shouldCreateCustomer = decodedToken.actor_id === ""
*
* if (shouldCreateCustomer) {
* const { customer } = await sdk.store.customer.create({
* email: decodedToken.user_metadata.email as string,
* })
*
* // refresh auth token
* await sdk.auth.refresh()
* // all subsequent requests will use the new token in the header
* } else {
* // Customer already exists and is authenticated
* }
* - lang: TypeScript
* label: GitHub Provider
* source: |-
* import Medusa from "@medusajs/js-sdk"
* import { decodeToken } from "react-jwt"
*
* let MEDUSA_BACKEND_URL = "http://localhost:9000"
*
@@ -69,7 +82,7 @@
* publishableKey: process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY,
* })
*
* await sdk.auth.callback(
* const token = await sdk.auth.callback(
* "customer",
* "github",
* {
@@ -77,12 +90,23 @@
* state: "456"
* }
* )
*
* // all subsequent requests will use the token in the header
* const { customer } = await sdk.store.customer.create({
* email: "customer@gmail.com",
* password: "supersecret"
* })
*
* const decodedToken = decodeToken(token) as { actor_id: string, user_metadata: Record<string, unknown> }
*
* const shouldCreateCustomer = decodedToken.actor_id === ""
*
* if (shouldCreateCustomer) {
* const { customer } = await sdk.store.customer.create({
* email: decodedToken.user_metadata.email as string,
* })
*
* // refresh auth token
* await sdk.auth.refresh()
* // all subsequent requests will use the new token in the header
* } else {
* // Customer already exists and is authenticated
* }
* tags:
* - Auth
* responses: