fix and update

This commit is contained in:
lendry
2026-07-01 17:00:55 +03:00
parent 607397fcf3
commit 0c3c6d6d82
8 changed files with 323 additions and 184 deletions

View File

@@ -5,6 +5,7 @@ export interface OneTapUrls {
frontendBase: string;
widgetUrl: string;
fedcmConfigUrl: string;
fedcmDiscoverUrl: string;
webIdentityUrl: string;
projectName: string;
}
@@ -21,13 +22,14 @@ export function buildOneTapUrls(
frontendBase: front,
widgetUrl: `${front}/sso-widget.js`,
fedcmConfigUrl: `${base}/fedcm/config.json`,
fedcmDiscoverUrl: `${base}/fedcm/discover.json`,
webIdentityUrl: `${base}/.well-known/web-identity`,
projectName
};
}
export function buildOneTapExamples(urls: OneTapUrls, clientIdPlaceholder = 'YOUR_CLIENT_ID'): OAuthExample[] {
const { apiBase, frontendBase, widgetUrl, fedcmConfigUrl, projectName } = urls;
const { apiBase, frontendBase, widgetUrl, fedcmConfigUrl, fedcmDiscoverUrl, webIdentityUrl, projectName } = urls;
const redirectUri = 'https://app.example.com/auth/callback';
return [
@@ -59,8 +61,8 @@ export function buildOneTapExamples(urls: OneTapUrls, clientIdPlaceholder = 'YOU
id: 'fedcm-native',
label: 'FedCM (нативный API)',
language: 'javascript',
code: `// Работает в Chrome/Edge при поддержке IdentityCredential.
// Пользователь должен быть залогинен на ${frontendBase} (FedCM cookie).
code: `// Работает в Chrome/Edge 132+ (поля name/email/picture/tel — с Chrome 141 для tel).
// Пользователь должен быть залогинен на ${frontendBase} (cookie lendry_fedcm_sess на домене IdP).
async function loginWithFedCM() {
if (!('IdentityCredential' in window)) {
@@ -72,6 +74,7 @@ async function loginWithFedCM() {
providers: [{
configURL: '${fedcmConfigUrl}',
clientId: '${clientIdPlaceholder}',
// Chrome 132+: disclosure в диалоге FedCM (имя, email, аватар, телефон)
fields: ['name', 'email', 'picture', 'tel']
}]
},
@@ -145,14 +148,20 @@ async function fetchProfile(accessToken) {
id: 'curl-fedcm',
label: 'FedCM endpoints (curl)',
language: 'bash',
code: `# Манифест FedCM
curl -s ${apiBase}/.well-known/web-identity | jq
code: `# Манифест FedCM (заголовок Sec-Fetch-Dest обязателен для Chrome)
curl -s ${webIdentityUrl} \\
-H "Sec-Fetch-Dest: webidentity" | jq
# Конфигурация провайдера
curl -s ${apiBase}/fedcm/config.json | jq
# Конфигурация провайдера (branding.name = PROJECT_NAME из админки)
curl -s ${fedcmConfigUrl} \\
-H "Sec-Fetch-Dest: webidentity" | jq
# Список аккаунтов (нужна cookie lendry_fedcm_sess после входа на IdP)
# Discovery для виджета и диагностики
curl -s ${fedcmDiscoverUrl} | jq
# Список аккаунтов (cookie lendry_fedcm_sess после входа на IdP)
curl -s ${apiBase}/fedcm/accounts \\
-H "Sec-Fetch-Dest: webidentity" \\
-H "Cookie: lendry_fedcm_sess=..." \\
--include