Federated Credential Management
Pokud máte zájem o Přihlášení přes Seznam s FedCM na vašem webu, musíte:
- vložit na své stránky příslušný JS kód, který vyvolá FedCM dialog
- po úspěšném dokončení FedCM převzít Seznamem poskytnutý krátkodobý
kód
a následně s ním zažádat o uživatelská data
Podrobné informace o tom, jak FedCM funguje: FedCM API developer guide
Klientská část
Následuje minimalní JS kód dostačující ke správnému fungování FedCM. V případě, že jsou v prohlížeči přihlášení Seznam uživatelé, bude zobrazen FedCM dialog vyzývající k udělení povolení přihlášení přes Seznam.
// neni podporovano ve vsech prohlizecich
if ("IdentityCredential" in window) {
async function getCredential() {
try {
const credential = await navigator.credentials.get({
identity: {
context: "signin",
providers: [{
// nemenna adresa konf. souboru
configURL: "https://login.szn.cz/fedcm/config.json",
// vase client_id
clientId: "5257140..."
}]
}
});
// naplneni promenne v pripade uspesneho (odsouhlaseneho) FedCM dialogu
const code = credential.token;
// predani kodu vasi serverove casti
// ( . . . )
} catch (e) {}
}
getCredential();
}
Serverová část
Využitím vašeho client_id
i client_secret
získáte access_token
s jehož pomocí následně i data o uživateli. Příklad takového kódu:
# nejprve ziskate access_token
res = requests.post("https://login.szn.cz/api/v1/oauth/token", json={
"grant_type": "authorization_code",
"code": code, # kod ziskany v klientske casti (pomoci FedCM)
"client_id": "5257140...", # vase client_id
"client_secret": "e9d4c83..." # vase client_secret
})
access_token = res.json().get("access_token")
token_type = res.json().get("token_type")
# ziskani uzivatelskych dat
headers = {"Authorization": f"{token_type} {access_token}"}
user_data = requests.get("https://login.szn.cz/api/v1/user", headers=headers)
Podrobný popis endpointu /oauth/token
a jeho odpovědi najdete v sekci Přihlášení přes Seznam.
Pokud kvůli dřívější implementaci Přihlášení přes Seznam posíláte na endpoint /oauth/token
i redirect_uri
, mějte na paměti, že v rámci FedCM se nepoužívá, proto redirect_uri
v tomto případě neposílejte.
V odpovědi pak naleznete následující data:
accountDisplayName
advert_user_id
domain
email
firstname
lastname
message
oauth_user_id
status
username
Poznámky
- Pokud se v prohlížeči zatím žádní uživatelé nepřihlásili, pak nebude FedCM dialog zobrazen.
- Pokud se v minulosti přihlásili uživatelé a momentálně jsou odhlášení - FedCM zobrazí jednou dialog s možností otevřít pop-up s přihlášením.