[{"data":1,"prerenderedAt":1867},["ShallowReactive",2],{"docs-navigation:es":3,"\u002Fdocs\u002Fes\u002Fsite-owners\u002Fintegrations\u002Fsingle-sign-on":161,"\u002Fdocs\u002Fes\u002Fsite-owners\u002Fintegrations\u002Fsingle-sign-on:surround":1862},[4],{"title":5,"path":6,"stem":7,"children":8,"page":41},"Docs","\u002Fdocs","docs",[9],{"title":10,"path":11,"stem":12,"children":13,"page":41},"Es","\u002Fdocs\u002Fes","docs\u002Fes",[14,106],{"title":15,"icon":16,"path":17,"stem":18,"children":19},"Propietarios de sitios","i-ph:storefront-duotone","\u002Fdocs\u002Fes\u002Fsite-owners","docs\u002Fes\u002F1.site-owners\u002Findex",[20,23,42,64,86,96],{"title":21,"path":17,"stem":18,"icon":22},"Introducción","i-ph:house-line-duotone",{"title":24,"icon":25,"path":26,"stem":27,"children":28,"page":41},"Primeros pasos","i-ph:rocket-launch-duotone","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fgetting-started","docs\u002Fes\u002F1.site-owners\u002F1.getting-started",[29,33,37],{"title":30,"path":31,"stem":32},"Inicio rápido","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fgetting-started\u002Fquick-start","docs\u002Fes\u002F1.site-owners\u002F1.getting-started\u002F1.quick-start",{"title":34,"path":35,"stem":36},"Instalación","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fgetting-started\u002Finstallation","docs\u002Fes\u002F1.site-owners\u002F1.getting-started\u002F2.installation",{"title":38,"path":39,"stem":40},"Apariencia e idioma","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fgetting-started\u002Fappearance","docs\u002Fes\u002F1.site-owners\u002F1.getting-started\u002F3.appearance",false,{"title":43,"icon":44,"path":45,"stem":46,"children":47,"page":41},"Moderación","i-ph:shield-check-duotone","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fmoderation","docs\u002Fes\u002F1.site-owners\u002F2.moderation",[48,52,56,60],{"title":49,"path":50,"stem":51},"Cómo funciona la moderación","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fmoderation\u002Fhow-it-works","docs\u002Fes\u002F1.site-owners\u002F2.moderation\u002F1.how-it-works",{"title":53,"path":54,"stem":55},"Moderar comentarios","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fmoderation\u002Fmoderating-comments","docs\u002Fes\u002F1.site-owners\u002F2.moderation\u002F2.moderating-comments",{"title":57,"path":58,"stem":59},"Reglas y ciclo de vida","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fmoderation\u002Frules-and-lifecycle","docs\u002Fes\u002F1.site-owners\u002F2.moderation\u002F3.rules-and-lifecycle",{"title":61,"path":62,"stem":63},"Bloquear comentaristas","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fmoderation\u002Fbanning-commenters","docs\u002Fes\u002F1.site-owners\u002F2.moderation\u002F4.banning-commenters",{"title":65,"icon":66,"path":67,"stem":68,"children":69,"page":41},"Widgets y equipo","i-ph:app-window-duotone","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fwidgets","docs\u002Fes\u002F1.site-owners\u002F3.widgets",[70,74,78,82],{"title":71,"path":72,"stem":73},"Gestionar widgets","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fwidgets\u002Fmanaging-widgets","docs\u002Fes\u002F1.site-owners\u002F3.widgets\u002F1.managing-widgets",{"title":75,"path":76,"stem":77},"Equipo y roles","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fwidgets\u002Fteam-and-roles","docs\u002Fes\u002F1.site-owners\u002F3.widgets\u002F2.team-and-roles",{"title":79,"path":80,"stem":81},"Reacciones y emojis","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fwidgets\u002Freactions-and-emoji","docs\u002Fes\u002F1.site-owners\u002F3.widgets\u002F3.reactions-and-emoji",{"title":83,"path":84,"stem":85},"Insignias","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fwidgets\u002Fbadges","docs\u002Fes\u002F1.site-owners\u002F3.widgets\u002F4.badges",{"title":87,"icon":88,"path":89,"stem":90,"children":91,"page":41},"Integraciones","i-ph:plugs-connected-duotone","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fintegrations","docs\u002Fes\u002F1.site-owners\u002F4.integrations",[92],{"title":93,"path":94,"stem":95},"Inicio de sesión único (SSO)","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fintegrations\u002Fsingle-sign-on","docs\u002Fes\u002F1.site-owners\u002F4.integrations\u002F1.single-sign-on",{"title":97,"icon":98,"path":99,"stem":100,"children":101,"page":41},"Facturación","i-ph:crown-duotone","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fbilling","docs\u002Fes\u002F1.site-owners\u002F5.billing",[102],{"title":103,"path":104,"stem":105},"Planes y facturación","\u002Fdocs\u002Fes\u002Fsite-owners\u002Fbilling\u002Fplans-and-billing","docs\u002Fes\u002F1.site-owners\u002F5.billing\u002F1.plans-and-billing",{"title":107,"icon":108,"path":109,"stem":110,"children":111},"Lectores","i-ph:chat-circle-text-duotone","\u002Fdocs\u002Fes\u002Freaders","docs\u002Fes\u002F2.readers\u002Findex",[112,113,125,143],{"title":21,"path":109,"stem":110,"icon":22},{"title":24,"icon":25,"path":114,"stem":115,"children":116,"page":41},"\u002Fdocs\u002Fes\u002Freaders\u002Fgetting-started","docs\u002Fes\u002F2.readers\u002F1.getting-started",[117,121],{"title":118,"path":119,"stem":120},"Iniciar sesión","\u002Fdocs\u002Fes\u002Freaders\u002Fgetting-started\u002Fsigning-in","docs\u002Fes\u002F2.readers\u002F1.getting-started\u002F1.signing-in",{"title":122,"path":123,"stem":124},"Tu perfil","\u002Fdocs\u002Fes\u002Freaders\u002Fgetting-started\u002Fyour-profile","docs\u002Fes\u002F2.readers\u002F1.getting-started\u002F2.your-profile",{"title":126,"icon":127,"path":128,"stem":129,"children":130,"page":41},"Comentar","i-ph:chats-circle-duotone","\u002Fdocs\u002Fes\u002Freaders\u002Fcommenting","docs\u002Fes\u002F2.readers\u002F2.commenting",[131,135,139],{"title":132,"path":133,"stem":134},"Escribir comentarios","\u002Fdocs\u002Fes\u002Freaders\u002Fcommenting\u002Fwriting-comments","docs\u002Fes\u002F2.readers\u002F2.commenting\u002F1.writing-comments",{"title":136,"path":137,"stem":138},"Leer y reaccionar","\u002Fdocs\u002Fes\u002Freaders\u002Fcommenting\u002Freading-and-reacting","docs\u002Fes\u002F2.readers\u002F2.commenting\u002F2.reading-and-reacting",{"title":140,"path":141,"stem":142},"Por qué un comentario espera o desaparece","\u002Fdocs\u002Fes\u002Freaders\u002Fcommenting\u002Fwhen-comments-wait","docs\u002Fes\u002F2.readers\u002F2.commenting\u002F3.when-comments-wait",{"title":144,"icon":145,"path":146,"stem":147,"children":148,"page":41},"Tu cuenta","i-ph:user-circle-duotone","\u002Fdocs\u002Fes\u002Freaders\u002Faccount","docs\u002Fes\u002F2.readers\u002F3.account",[149,153,157],{"title":150,"path":151,"stem":152},"Notificaciones","\u002Fdocs\u002Fes\u002Freaders\u002Faccount\u002Fnotifications","docs\u002Fes\u002F2.readers\u002F3.account\u002F1.notifications",{"title":154,"path":155,"stem":156},"Tus comentarios y «me gusta»","\u002Fdocs\u002Fes\u002Freaders\u002Faccount\u002Fyour-activity","docs\u002Fes\u002F2.readers\u002F3.account\u002F2.your-activity",{"title":158,"path":159,"stem":160},"Sitios vinculados","\u002Fdocs\u002Fes\u002Freaders\u002Faccount\u002Flinked-sites","docs\u002Fes\u002F2.readers\u002F3.account\u002F3.linked-sites",{"id":162,"title":93,"body":163,"description":1857,"extension":1858,"meta":1859,"navigation":463,"path":94,"seo":1860,"stem":95,"__hash__":1861},"docs_es\u002Fdocs\u002Fes\u002F1.site-owners\u002F4.integrations\u002F1.single-sign-on.md",{"type":164,"value":165,"toc":1844},"minimark",[166,171,194,198,202,209,272,276,283,404,411,1376,1380,1383,1498,1505,1508,1715,1727,1730,1734,1737,1752,1755,1759,1774,1778,1840],[167,168,170],"h2",{"id":169},"cómo-funciona","Cómo funciona",[172,173,174,183,191],"ol",{},[175,176,177,178,182],"li",{},"Mientras un lector tiene la sesión iniciada en tu sitio, tu ",[179,180,181],"strong",{},"servidor"," firma un token de corta duración que indica quién es.",[175,184,185,186,190],{},"Tu página pasa ese token al widget de comentarios en el atributo ",[187,188,189],"code",{},"sso-token",".",[175,192,193],{},"Crowment comprueba la firma e inicia la sesión del lector en los comentarios con esa identidad.",[195,196,197],"p",{},"El token se firma con un secreto que solo conocen tu servidor y Crowment, así que nadie puede iniciar sesión en nombre de otra persona. El inicio de sesión único está disponible en todos los planes.",[167,199,201],{"id":200},"_1-actívalo","1. Actívalo",[195,203,204,205,208],{},"Abre ",[179,206,207],{},"Site Console → tu widget → Single Sign-On",". Propietarios y administradores pueden cambiar los ajustes.",[210,211,213,218,229,233,254,258],"steps",{"level":212},"3",[214,215,217],"h3",{"id":216},"crea-el-secreto-de-firma","Crea el secreto de firma",[195,219,220,221,224,225,228],{},"Solo el propietario del widget puede hacerlo. El secreto se muestra ",[179,222,223],{},"una sola vez",": guárdalo en las variables de entorno de tu servidor, por ejemplo como ",[187,226,227],{},"CROWMENT_SSO_SECRET",". Nunca lo pongas en código del navegador, en el paquete de una aplicación ni en un repositorio público.",[214,230,232],{"id":231},"elige-un-modo","Elige un modo",[234,235,236,242,248],"ul",{},[175,237,238,241],{},[179,239,240],{},"Off",": los lectores inician sesión solo con Crowment.",[175,243,244,247],{},[179,245,246],{},"Optional",": los lectores con sesión iniciada en tu sitio entran automáticamente; el inicio de sesión con Crowment sigue disponible.",[175,249,250,253],{},[179,251,252],{},"Required",": solo pueden iniciar sesión las cuentas de tu sitio. Los comentarios y las sesiones existentes se mantienen.",[214,255,257],{"id":256},"define-tus-páginas-de-inicio-y-cierre-de-sesión-opcional","Define tus páginas de inicio y cierre de sesión (opcional)",[195,259,260,261,264,265,268,269,271],{},"Ambas deben estar en el dominio de tu widget. El botón de inicio de sesión del widget envía a los lectores a tu ",[179,262,263],{},"página de inicio de sesión"," con un parámetro ",[187,266,267],{},"return_to"," que contiene la página de la que venían. Comprueba que ",[187,270,267],{}," apunta a tu propio sitio antes de redirigir.",[167,273,275],{"id":274},"_2-firma-un-token-en-tu-servidor","2. Firma un token en tu servidor",[195,277,278,279,282],{},"Firma un JWT con ",[179,280,281],{},"HS256"," y tu secreto en cada vista de página en la que un lector tenga la sesión iniciada.",[284,285,286,302],"table",{},[287,288,289],"thead",{},[290,291,292,296,299],"tr",{},[293,294,295],"th",{},"Claim",[293,297,298],{},"Obligatorio",[293,300,301],{},"Valor",[303,304,305,323,335,352,376,388],"tbody",{},[290,306,307,313,316],{},[308,309,310],"td",{},[187,311,312],{},"sub",[308,314,315],{},"sí",[308,317,318,319,322],{},"El ID de usuario del lector en tu sitio, como ",[179,320,321],{},"string",", de 128 caracteres como máximo. Usa un ID que nunca cambie ni se reutilice; una dirección de correo no es buena opción.",[290,324,325,330,332],{},[308,326,327],{},[187,328,329],{},"name",[308,331,315],{},[308,333,334],{},"El nombre que se muestra junto a sus comentarios, hasta 100 caracteres. Se elimina el HTML.",[290,336,337,342,345],{},[308,338,339],{},[187,340,341],{},"avatar",[308,343,344],{},"no",[308,346,347,348,351],{},"Una URL de imagen ",[187,349,350],{},"https:\u002F\u002F",". Cualquier otra cosa se ignora.",[290,353,354,359,361],{},[308,355,356],{},[187,357,358],{},"badges",[308,360,344],{},[308,362,363,364,367,368,371,372,375],{},"Claves de las insignias del lector, p. ej. ",[187,365,366],{},"[\"vip\"]",", que coinciden con las claves SSO de ",[179,369,370],{},"Badges",". Si no lo envías, sus insignias no cambian; ",[187,373,374],{},"[]"," quita las que obtuvo por esta vía. Las insignias dadas desde el panel se mantienen.",[290,377,378,383,385],{},[308,379,380],{},[187,381,382],{},"aud",[308,384,315],{},[308,386,387],{},"La app key de tu widget, exactamente como en el código de inserción.",[290,389,390,399,401],{},[308,391,392,395,396],{},[187,393,394],{},"iat",", ",[187,397,398],{},"exp",[308,400,315],{},[308,402,403],{},"Emisión y caducidad, en segundos. El token puede durar como máximo una hora. Se tolera un minuto de diferencia de reloj.",[195,405,406,407,410],{},"No hace falta un claim ",[187,408,409],{},"email"," y no se usa: Crowment nunca asocia cuentas por correo.",[412,413,414,615,856,1126],"code-group",{},[415,416,422],"pre",{"className":417,"code":418,"filename":419,"language":420,"meta":421,"style":421},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F npm install jsonwebtoken\nimport jwt from 'jsonwebtoken'\n\nconst ssoToken = jwt.sign(\n  { sub: String(user.id), name: user.displayName, avatar: user.avatarUrl },\n  process.env.CROWMENT_SSO_SECRET,\n  { algorithm: 'HS256', audience: CROWMENT_APP_KEY, expiresIn: '1h' },\n)\n","Node.js","js","",[187,423,424,433,458,465,490,547,565,609],{"__ignoreMap":421},[425,426,429],"span",{"class":427,"line":428},"line",1,[425,430,432],{"class":431},"sHwdD","\u002F\u002F npm install jsonwebtoken\n",[425,434,436,440,444,447,451,455],{"class":427,"line":435},2,[425,437,439],{"class":438},"s7zQu","import",[425,441,443],{"class":442},"sTEyZ"," jwt ",[425,445,446],{"class":438},"from",[425,448,450],{"class":449},"sMK4o"," '",[425,452,454],{"class":453},"sfazB","jsonwebtoken",[425,456,457],{"class":449},"'\n",[425,459,461],{"class":427,"line":460},3,[425,462,464],{"emptyLinePlaceholder":463},true,"\n",[425,466,468,472,475,478,481,483,487],{"class":427,"line":467},4,[425,469,471],{"class":470},"spNyl","const",[425,473,474],{"class":442}," ssoToken ",[425,476,477],{"class":449},"=",[425,479,480],{"class":442}," jwt",[425,482,190],{"class":449},[425,484,486],{"class":485},"s2Zo4","sign",[425,488,489],{"class":442},"(\n",[425,491,493,496,500,503,506,509,511,514,517,520,522,525,527,530,532,535,537,539,541,544],{"class":427,"line":492},5,[425,494,495],{"class":449},"  {",[425,497,499],{"class":498},"swJcz"," sub",[425,501,502],{"class":449},":",[425,504,505],{"class":485}," String",[425,507,508],{"class":442},"(user",[425,510,190],{"class":449},[425,512,513],{"class":442},"id)",[425,515,516],{"class":449},",",[425,518,519],{"class":498}," name",[425,521,502],{"class":449},[425,523,524],{"class":442}," user",[425,526,190],{"class":449},[425,528,529],{"class":442},"displayName",[425,531,516],{"class":449},[425,533,534],{"class":498}," avatar",[425,536,502],{"class":449},[425,538,524],{"class":442},[425,540,190],{"class":449},[425,542,543],{"class":442},"avatarUrl ",[425,545,546],{"class":449},"},\n",[425,548,550,553,555,558,560,562],{"class":427,"line":549},6,[425,551,552],{"class":442},"  process",[425,554,190],{"class":449},[425,556,557],{"class":442},"env",[425,559,190],{"class":449},[425,561,227],{"class":442},[425,563,564],{"class":449},",\n",[425,566,568,570,573,575,577,579,582,584,587,589,592,594,597,599,601,604,606],{"class":427,"line":567},7,[425,569,495],{"class":449},[425,571,572],{"class":498}," algorithm",[425,574,502],{"class":449},[425,576,450],{"class":449},[425,578,281],{"class":453},[425,580,581],{"class":449},"'",[425,583,516],{"class":449},[425,585,586],{"class":498}," audience",[425,588,502],{"class":449},[425,590,591],{"class":442}," CROWMENT_APP_KEY",[425,593,516],{"class":449},[425,595,596],{"class":498}," expiresIn",[425,598,502],{"class":449},[425,600,450],{"class":449},[425,602,603],{"class":453},"1h",[425,605,581],{"class":449},[425,607,608],{"class":449}," },\n",[425,610,612],{"class":427,"line":611},8,[425,613,614],{"class":442},")\n",[415,616,621],{"className":617,"code":618,"filename":619,"language":620,"meta":421,"style":421},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F composer require firebase\u002Fphp-jwt\nuse Firebase\\JWT\\JWT;\n\n$now = time();\n$ssoToken = JWT::encode([\n    'sub'    => (string) $user->id,\n    'name'   => $user->display_name,\n    'avatar' => $user->avatar_url,\n    'aud'    => CROWMENT_APP_KEY,\n    'iat'    => $now,\n    'exp'    => $now + 3600,\n], getenv('CROWMENT_SSO_SECRET'), 'HS256');\n","PHP","php",[187,622,623,628,650,654,670,692,726,748,770,785,803,826],{"__ignoreMap":421},[425,624,625],{"class":427,"line":428},[425,626,627],{"class":431},"\u002F\u002F composer require firebase\u002Fphp-jwt\n",[425,629,630,634,637,640,643,645,647],{"class":427,"line":435},[425,631,633],{"class":632},"sbssI","use",[425,635,636],{"class":442}," Firebase",[425,638,639],{"class":449},"\\",[425,641,642],{"class":442},"JWT",[425,644,639],{"class":449},[425,646,642],{"class":442},[425,648,649],{"class":449},";\n",[425,651,652],{"class":427,"line":460},[425,653,464],{"emptyLinePlaceholder":463},[425,655,656,659,662,664,667],{"class":427,"line":467},[425,657,658],{"class":449},"$",[425,660,661],{"class":442},"now ",[425,663,477],{"class":449},[425,665,666],{"class":485}," time",[425,668,669],{"class":449},"();\n",[425,671,672,674,677,679,683,686,689],{"class":427,"line":492},[425,673,658],{"class":449},[425,675,676],{"class":442},"ssoToken ",[425,678,477],{"class":449},[425,680,682],{"class":681},"sBMFI"," JWT",[425,684,685],{"class":449},"::",[425,687,688],{"class":485},"encode",[425,690,691],{"class":449},"([\n",[425,693,694,697,699,701,704,707,709,712,715,718,721,724],{"class":427,"line":549},[425,695,696],{"class":449},"    '",[425,698,312],{"class":453},[425,700,581],{"class":449},[425,702,703],{"class":449},"    =>",[425,705,706],{"class":449}," (",[425,708,321],{"class":470},[425,710,711],{"class":449},")",[425,713,714],{"class":449}," $",[425,716,717],{"class":442},"user",[425,719,720],{"class":449},"->",[425,722,723],{"class":442},"id",[425,725,564],{"class":449},[425,727,728,730,732,734,737,739,741,743,746],{"class":427,"line":567},[425,729,696],{"class":449},[425,731,329],{"class":453},[425,733,581],{"class":449},[425,735,736],{"class":449},"   =>",[425,738,714],{"class":449},[425,740,717],{"class":442},[425,742,720],{"class":449},[425,744,745],{"class":442},"display_name",[425,747,564],{"class":449},[425,749,750,752,754,756,759,761,763,765,768],{"class":427,"line":611},[425,751,696],{"class":449},[425,753,341],{"class":453},[425,755,581],{"class":449},[425,757,758],{"class":449}," =>",[425,760,714],{"class":449},[425,762,717],{"class":442},[425,764,720],{"class":449},[425,766,767],{"class":442},"avatar_url",[425,769,564],{"class":449},[425,771,773,775,777,779,781,783],{"class":427,"line":772},9,[425,774,696],{"class":449},[425,776,382],{"class":453},[425,778,581],{"class":449},[425,780,703],{"class":449},[425,782,591],{"class":442},[425,784,564],{"class":449},[425,786,788,790,792,794,796,798,801],{"class":427,"line":787},10,[425,789,696],{"class":449},[425,791,394],{"class":453},[425,793,581],{"class":449},[425,795,703],{"class":449},[425,797,714],{"class":449},[425,799,800],{"class":442},"now",[425,802,564],{"class":449},[425,804,806,808,810,812,814,816,818,821,824],{"class":427,"line":805},11,[425,807,696],{"class":449},[425,809,398],{"class":453},[425,811,581],{"class":449},[425,813,703],{"class":449},[425,815,714],{"class":449},[425,817,661],{"class":442},[425,819,820],{"class":449},"+",[425,822,823],{"class":632}," 3600",[425,825,564],{"class":449},[425,827,829,832,835,838,840,842,844,847,849,851,853],{"class":427,"line":828},12,[425,830,831],{"class":449},"],",[425,833,834],{"class":485}," getenv",[425,836,837],{"class":449},"(",[425,839,581],{"class":449},[425,841,227],{"class":453},[425,843,581],{"class":449},[425,845,846],{"class":449},"),",[425,848,450],{"class":449},[425,850,281],{"class":453},[425,852,581],{"class":449},[425,854,855],{"class":449},");\n",[415,857,862],{"className":858,"code":859,"filename":860,"language":861,"meta":421,"style":421},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# pip install pyjwt\nimport os\nfrom datetime import datetime, timedelta, timezone\nimport jwt\n\nnow = datetime.now(timezone.utc)\nsso_token = jwt.encode(\n    {\n        \"sub\": str(user.id),\n        \"name\": user.display_name,\n        \"avatar\": user.avatar_url,\n        \"aud\": CROWMENT_APP_KEY,\n        \"iat\": now,\n        \"exp\": now + timedelta(hours=1),\n    },\n    os.environ[\"CROWMENT_SSO_SECRET\"],\n    algorithm=\"HS256\",\n)\n","Python","python",[187,863,864,869,876,898,905,909,933,948,953,979,997,1015,1029,1045,1076,1082,1105,1121],{"__ignoreMap":421},[425,865,866],{"class":427,"line":428},[425,867,868],{"class":431},"# pip install pyjwt\n",[425,870,871,873],{"class":427,"line":435},[425,872,439],{"class":438},[425,874,875],{"class":442}," os\n",[425,877,878,880,883,885,888,890,893,895],{"class":427,"line":460},[425,879,446],{"class":438},[425,881,882],{"class":442}," datetime ",[425,884,439],{"class":438},[425,886,887],{"class":442}," datetime",[425,889,516],{"class":449},[425,891,892],{"class":442}," timedelta",[425,894,516],{"class":449},[425,896,897],{"class":442}," timezone\n",[425,899,900,902],{"class":427,"line":467},[425,901,439],{"class":438},[425,903,904],{"class":442}," jwt\n",[425,906,907],{"class":427,"line":492},[425,908,464],{"emptyLinePlaceholder":463},[425,910,911,913,915,917,919,921,923,926,928,931],{"class":427,"line":549},[425,912,661],{"class":442},[425,914,477],{"class":449},[425,916,887],{"class":442},[425,918,190],{"class":449},[425,920,800],{"class":485},[425,922,837],{"class":449},[425,924,925],{"class":485},"timezone",[425,927,190],{"class":449},[425,929,930],{"class":498},"utc",[425,932,614],{"class":449},[425,934,935,938,940,942,944,946],{"class":427,"line":567},[425,936,937],{"class":442},"sso_token ",[425,939,477],{"class":449},[425,941,480],{"class":442},[425,943,190],{"class":449},[425,945,688],{"class":485},[425,947,489],{"class":449},[425,949,950],{"class":427,"line":611},[425,951,952],{"class":449},"    {\n",[425,954,955,958,960,963,965,968,970,972,974,976],{"class":427,"line":772},[425,956,957],{"class":449},"        \"",[425,959,312],{"class":453},[425,961,962],{"class":449},"\"",[425,964,502],{"class":449},[425,966,967],{"class":681}," str",[425,969,837],{"class":449},[425,971,717],{"class":485},[425,973,190],{"class":449},[425,975,723],{"class":498},[425,977,978],{"class":449},"),\n",[425,980,981,983,985,987,989,991,993,995],{"class":427,"line":787},[425,982,957],{"class":449},[425,984,329],{"class":453},[425,986,962],{"class":449},[425,988,502],{"class":449},[425,990,524],{"class":485},[425,992,190],{"class":449},[425,994,745],{"class":498},[425,996,564],{"class":449},[425,998,999,1001,1003,1005,1007,1009,1011,1013],{"class":427,"line":805},[425,1000,957],{"class":449},[425,1002,341],{"class":453},[425,1004,962],{"class":449},[425,1006,502],{"class":449},[425,1008,524],{"class":485},[425,1010,190],{"class":449},[425,1012,767],{"class":498},[425,1014,564],{"class":449},[425,1016,1017,1019,1021,1023,1025,1027],{"class":427,"line":828},[425,1018,957],{"class":449},[425,1020,382],{"class":453},[425,1022,962],{"class":449},[425,1024,502],{"class":449},[425,1026,591],{"class":485},[425,1028,564],{"class":449},[425,1030,1032,1034,1036,1038,1040,1043],{"class":427,"line":1031},13,[425,1033,957],{"class":449},[425,1035,394],{"class":453},[425,1037,962],{"class":449},[425,1039,502],{"class":449},[425,1041,1042],{"class":485}," now",[425,1044,564],{"class":449},[425,1046,1048,1050,1052,1054,1056,1059,1061,1063,1065,1069,1071,1074],{"class":427,"line":1047},14,[425,1049,957],{"class":449},[425,1051,398],{"class":453},[425,1053,962],{"class":449},[425,1055,502],{"class":449},[425,1057,1058],{"class":485}," now ",[425,1060,820],{"class":449},[425,1062,892],{"class":485},[425,1064,837],{"class":449},[425,1066,1068],{"class":1067},"sHdIc","hours",[425,1070,477],{"class":449},[425,1072,1073],{"class":632},"1",[425,1075,978],{"class":449},[425,1077,1079],{"class":427,"line":1078},15,[425,1080,1081],{"class":449},"    },\n",[425,1083,1085,1088,1090,1093,1096,1098,1100,1102],{"class":427,"line":1084},16,[425,1086,1087],{"class":485},"    os",[425,1089,190],{"class":449},[425,1091,1092],{"class":498},"environ",[425,1094,1095],{"class":449},"[",[425,1097,962],{"class":449},[425,1099,227],{"class":453},[425,1101,962],{"class":449},[425,1103,1104],{"class":449},"],\n",[425,1106,1108,1111,1113,1115,1117,1119],{"class":427,"line":1107},17,[425,1109,1110],{"class":1067},"    algorithm",[425,1112,477],{"class":449},[425,1114,962],{"class":449},[425,1116,281],{"class":453},[425,1118,962],{"class":449},[425,1120,564],{"class":449},[425,1122,1124],{"class":427,"line":1123},18,[425,1125,614],{"class":449},[415,1127,1132],{"className":1128,"code":1129,"filename":1130,"language":1131,"meta":421,"style":421},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F go get github.com\u002Fgolang-jwt\u002Fjwt\u002Fv5\nnow := time.Now()\nssoToken, err := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{\n    \"sub\":    strconv.FormatInt(user.ID, 10),\n    \"name\":   user.DisplayName,\n    \"avatar\": user.AvatarURL,\n    \"aud\":    crowmentAppKey,\n    \"iat\":    now.Unix(),\n    \"exp\":    now.Add(time.Hour).Unix(),\n}).SignedString([]byte(os.Getenv(\"CROWMENT_SSO_SECRET\")))\n","Go","go",[187,1133,1134,1139,1156,1197,1232,1252,1271,1286,1307,1341],{"__ignoreMap":421},[425,1135,1136],{"class":427,"line":428},[425,1137,1138],{"class":431},"\u002F\u002F go get github.com\u002Fgolang-jwt\u002Fjwt\u002Fv5\n",[425,1140,1141,1143,1146,1148,1150,1153],{"class":427,"line":435},[425,1142,661],{"class":442},[425,1144,1145],{"class":449},":=",[425,1147,666],{"class":442},[425,1149,190],{"class":449},[425,1151,1152],{"class":485},"Now",[425,1154,1155],{"class":449},"()\n",[425,1157,1158,1161,1163,1166,1168,1170,1172,1175,1177,1180,1182,1185,1187,1189,1191,1194],{"class":427,"line":460},[425,1159,1160],{"class":442},"ssoToken",[425,1162,516],{"class":449},[425,1164,1165],{"class":442}," err ",[425,1167,1145],{"class":449},[425,1169,480],{"class":442},[425,1171,190],{"class":449},[425,1173,1174],{"class":485},"NewWithClaims",[425,1176,837],{"class":449},[425,1178,1179],{"class":442},"jwt",[425,1181,190],{"class":449},[425,1183,1184],{"class":442},"SigningMethodHS256",[425,1186,516],{"class":449},[425,1188,480],{"class":681},[425,1190,190],{"class":449},[425,1192,1193],{"class":681},"MapClaims",[425,1195,1196],{"class":449},"{\n",[425,1198,1199,1202,1204,1206,1208,1211,1213,1216,1218,1220,1222,1225,1227,1230],{"class":427,"line":467},[425,1200,1201],{"class":449},"    \"",[425,1203,312],{"class":453},[425,1205,962],{"class":449},[425,1207,502],{"class":449},[425,1209,1210],{"class":442},"    strconv",[425,1212,190],{"class":449},[425,1214,1215],{"class":485},"FormatInt",[425,1217,837],{"class":449},[425,1219,717],{"class":442},[425,1221,190],{"class":449},[425,1223,1224],{"class":442},"ID",[425,1226,516],{"class":449},[425,1228,1229],{"class":632}," 10",[425,1231,978],{"class":449},[425,1233,1234,1236,1238,1240,1242,1245,1247,1250],{"class":427,"line":492},[425,1235,1201],{"class":449},[425,1237,329],{"class":453},[425,1239,962],{"class":449},[425,1241,502],{"class":449},[425,1243,1244],{"class":442},"   user",[425,1246,190],{"class":449},[425,1248,1249],{"class":442},"DisplayName",[425,1251,564],{"class":449},[425,1253,1254,1256,1258,1260,1262,1264,1266,1269],{"class":427,"line":549},[425,1255,1201],{"class":449},[425,1257,341],{"class":453},[425,1259,962],{"class":449},[425,1261,502],{"class":449},[425,1263,524],{"class":442},[425,1265,190],{"class":449},[425,1267,1268],{"class":442},"AvatarURL",[425,1270,564],{"class":449},[425,1272,1273,1275,1277,1279,1281,1284],{"class":427,"line":567},[425,1274,1201],{"class":449},[425,1276,382],{"class":453},[425,1278,962],{"class":449},[425,1280,502],{"class":449},[425,1282,1283],{"class":442},"    crowmentAppKey",[425,1285,564],{"class":449},[425,1287,1288,1290,1292,1294,1296,1299,1301,1304],{"class":427,"line":611},[425,1289,1201],{"class":449},[425,1291,394],{"class":453},[425,1293,962],{"class":449},[425,1295,502],{"class":449},[425,1297,1298],{"class":442},"    now",[425,1300,190],{"class":449},[425,1302,1303],{"class":485},"Unix",[425,1305,1306],{"class":449},"(),\n",[425,1308,1309,1311,1313,1315,1317,1319,1321,1324,1326,1329,1331,1334,1337,1339],{"class":427,"line":772},[425,1310,1201],{"class":449},[425,1312,398],{"class":453},[425,1314,962],{"class":449},[425,1316,502],{"class":449},[425,1318,1298],{"class":442},[425,1320,190],{"class":449},[425,1322,1323],{"class":485},"Add",[425,1325,837],{"class":449},[425,1327,1328],{"class":442},"time",[425,1330,190],{"class":449},[425,1332,1333],{"class":442},"Hour",[425,1335,1336],{"class":449},").",[425,1338,1303],{"class":485},[425,1340,1306],{"class":449},[425,1342,1343,1346,1349,1352,1355,1357,1360,1362,1365,1367,1369,1371,1373],{"class":427,"line":787},[425,1344,1345],{"class":449},"}).",[425,1347,1348],{"class":485},"SignedString",[425,1350,1351],{"class":449},"([]",[425,1353,1354],{"class":470},"byte",[425,1356,837],{"class":449},[425,1358,1359],{"class":442},"os",[425,1361,190],{"class":449},[425,1363,1364],{"class":485},"Getenv",[425,1366,837],{"class":449},[425,1368,962],{"class":449},[425,1370,227],{"class":453},[425,1372,962],{"class":449},[425,1374,1375],{"class":449},")))\n",[167,1377,1379],{"id":1378},"_3-pásalo-al-widget","3. Pásalo al widget",[195,1381,1382],{},"En páginas renderizadas en el servidor, pon el token en el código de inserción:",[415,1384,1388],{"className":1385,"code":1386,"language":1387,"meta":421,"style":421},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript defer src=\"https:\u002F\u002Fembeds.crowment.com\u002Fcomments.js\">\u003C\u002Fscript>\n\n\u003C!-- signed in: pass the token your backend signed for this page view -->\n\u003Ccrow-comments app-key=\"YOUR_APP_KEY\" sso-token=\"SIGNED_TOKEN\">\u003C\u002Fcrow-comments>\n\n\u003C!-- signed out: leave sso-token out -->\n\u003Ccrow-comments app-key=\"YOUR_APP_KEY\">\u003C\u002Fcrow-comments>\n","html",[187,1389,1390,1421,1425,1430,1467,1471,1476],{"__ignoreMap":421},[425,1391,1392,1395,1398,1401,1404,1406,1408,1411,1413,1416,1418],{"class":427,"line":428},[425,1393,1394],{"class":449},"\u003C",[425,1396,1397],{"class":498},"script",[425,1399,1400],{"class":470}," defer",[425,1402,1403],{"class":470}," src",[425,1405,477],{"class":449},[425,1407,962],{"class":449},[425,1409,1410],{"class":453},"https:\u002F\u002Fembeds.crowment.com\u002Fcomments.js",[425,1412,962],{"class":449},[425,1414,1415],{"class":449},">\u003C\u002F",[425,1417,1397],{"class":498},[425,1419,1420],{"class":449},">\n",[425,1422,1423],{"class":427,"line":435},[425,1424,464],{"emptyLinePlaceholder":463},[425,1426,1427],{"class":427,"line":460},[425,1428,1429],{"class":431},"\u003C!-- signed in: pass the token your backend signed for this page view -->\n",[425,1431,1432,1434,1437,1440,1442,1444,1447,1449,1452,1454,1456,1459,1461,1463,1465],{"class":427,"line":467},[425,1433,1394],{"class":449},[425,1435,1436],{"class":498},"crow-comments",[425,1438,1439],{"class":470}," app-key",[425,1441,477],{"class":449},[425,1443,962],{"class":449},[425,1445,1446],{"class":453},"YOUR_APP_KEY",[425,1448,962],{"class":449},[425,1450,1451],{"class":470}," sso-token",[425,1453,477],{"class":449},[425,1455,962],{"class":449},[425,1457,1458],{"class":453},"SIGNED_TOKEN",[425,1460,962],{"class":449},[425,1462,1415],{"class":449},[425,1464,1436],{"class":498},[425,1466,1420],{"class":449},[425,1468,1469],{"class":427,"line":492},[425,1470,464],{"emptyLinePlaceholder":463},[425,1472,1473],{"class":427,"line":549},[425,1474,1475],{"class":431},"\u003C!-- signed out: leave sso-token out -->\n",[425,1477,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496],{"class":427,"line":567},[425,1479,1394],{"class":449},[425,1481,1436],{"class":498},[425,1483,1439],{"class":470},[425,1485,477],{"class":449},[425,1487,962],{"class":449},[425,1489,1446],{"class":453},[425,1491,962],{"class":449},[425,1493,1415],{"class":449},[425,1495,1436],{"class":498},[425,1497,1420],{"class":449},[195,1499,1500,1501,1504],{},"Pasa un token en ",[179,1502,1503],{},"cada"," página en la que el lector tenga la sesión iniciada. Una página sin token indica al widget que el lector cerró sesión, y el widget también la cierra en los comentarios. Visitar más páginas no vuelve a iniciar la sesión cada vez: el widget mantiene su sesión y solo intercambia un token nuevo cuando cambia el lector.",[195,1506,1507],{},"En una aplicación de una sola página, añade y quita el atributo a medida que cambia tu estado de sesión, y escucha los eventos del widget:",[415,1509,1511],{"className":417,"code":1510,"language":420,"meta":421,"style":421},"const widget = document.querySelector('crow-comments')\n\n\u002F\u002F after your site signs the reader in\nwidget.setAttribute('sso-token', await fetchCrowmentToken())\n\n\u002F\u002F after your site signs the reader out\nwidget.removeAttribute('sso-token')\n\n\u002F\u002F the token expired while the page was open: hand over a fresh one\nwidget.addEventListener('crow:sso-expired', async () => {\n  widget.setAttribute('sso-token', await fetchCrowmentToken())\n})\n\n\u002F\u002F Required mode without a sign-in page: show your own login\nwidget.addEventListener('crow:login-required', () => openLoginDialog())\n",[187,1512,1513,1540,1544,1549,1578,1582,1587,1606,1610,1615,1646,1671,1678,1682,1687],{"__ignoreMap":421},[425,1514,1515,1517,1520,1522,1525,1527,1530,1532,1534,1536,1538],{"class":427,"line":428},[425,1516,471],{"class":470},[425,1518,1519],{"class":442}," widget ",[425,1521,477],{"class":449},[425,1523,1524],{"class":442}," document",[425,1526,190],{"class":449},[425,1528,1529],{"class":485},"querySelector",[425,1531,837],{"class":442},[425,1533,581],{"class":449},[425,1535,1436],{"class":453},[425,1537,581],{"class":449},[425,1539,614],{"class":442},[425,1541,1542],{"class":427,"line":435},[425,1543,464],{"emptyLinePlaceholder":463},[425,1545,1546],{"class":427,"line":460},[425,1547,1548],{"class":431},"\u002F\u002F after your site signs the reader in\n",[425,1550,1551,1554,1556,1559,1561,1563,1565,1567,1569,1572,1575],{"class":427,"line":467},[425,1552,1553],{"class":442},"widget",[425,1555,190],{"class":449},[425,1557,1558],{"class":485},"setAttribute",[425,1560,837],{"class":442},[425,1562,581],{"class":449},[425,1564,189],{"class":453},[425,1566,581],{"class":449},[425,1568,516],{"class":449},[425,1570,1571],{"class":438}," await",[425,1573,1574],{"class":485}," fetchCrowmentToken",[425,1576,1577],{"class":442},"())\n",[425,1579,1580],{"class":427,"line":492},[425,1581,464],{"emptyLinePlaceholder":463},[425,1583,1584],{"class":427,"line":549},[425,1585,1586],{"class":431},"\u002F\u002F after your site signs the reader out\n",[425,1588,1589,1591,1593,1596,1598,1600,1602,1604],{"class":427,"line":567},[425,1590,1553],{"class":442},[425,1592,190],{"class":449},[425,1594,1595],{"class":485},"removeAttribute",[425,1597,837],{"class":442},[425,1599,581],{"class":449},[425,1601,189],{"class":453},[425,1603,581],{"class":449},[425,1605,614],{"class":442},[425,1607,1608],{"class":427,"line":611},[425,1609,464],{"emptyLinePlaceholder":463},[425,1611,1612],{"class":427,"line":772},[425,1613,1614],{"class":431},"\u002F\u002F the token expired while the page was open: hand over a fresh one\n",[425,1616,1617,1619,1621,1624,1626,1628,1631,1633,1635,1638,1641,1643],{"class":427,"line":787},[425,1618,1553],{"class":442},[425,1620,190],{"class":449},[425,1622,1623],{"class":485},"addEventListener",[425,1625,837],{"class":442},[425,1627,581],{"class":449},[425,1629,1630],{"class":453},"crow:sso-expired",[425,1632,581],{"class":449},[425,1634,516],{"class":449},[425,1636,1637],{"class":470}," async",[425,1639,1640],{"class":449}," ()",[425,1642,758],{"class":470},[425,1644,1645],{"class":449}," {\n",[425,1647,1648,1651,1653,1655,1657,1659,1661,1663,1665,1667,1669],{"class":427,"line":805},[425,1649,1650],{"class":442},"  widget",[425,1652,190],{"class":449},[425,1654,1558],{"class":485},[425,1656,837],{"class":498},[425,1658,581],{"class":449},[425,1660,189],{"class":453},[425,1662,581],{"class":449},[425,1664,516],{"class":449},[425,1666,1571],{"class":438},[425,1668,1574],{"class":485},[425,1670,1577],{"class":498},[425,1672,1673,1676],{"class":427,"line":828},[425,1674,1675],{"class":449},"}",[425,1677,614],{"class":442},[425,1679,1680],{"class":427,"line":1031},[425,1681,464],{"emptyLinePlaceholder":463},[425,1683,1684],{"class":427,"line":1047},[425,1685,1686],{"class":431},"\u002F\u002F Required mode without a sign-in page: show your own login\n",[425,1688,1689,1691,1693,1695,1697,1699,1702,1704,1706,1708,1710,1713],{"class":427,"line":1078},[425,1690,1553],{"class":442},[425,1692,190],{"class":449},[425,1694,1623],{"class":485},[425,1696,837],{"class":442},[425,1698,581],{"class":449},[425,1700,1701],{"class":453},"crow:login-required",[425,1703,581],{"class":449},[425,1705,516],{"class":449},[425,1707,1640],{"class":449},[425,1709,758],{"class":470},[425,1711,1712],{"class":485}," openLoginDialog",[425,1714,1577],{"class":442},[234,1716,1717,1722],{},[175,1718,1719,1721],{},[187,1720,1630],{},": el widget necesitaba iniciar la sesión del lector, pero el token había caducado. Pasa uno nuevo.",[175,1723,1724,1726],{},[187,1725,1701],{},": modo Required, sin página de inicio de sesión definida, y el lector pulsó el botón de iniciar sesión.",[195,1728,1729],{},"Los lectores que iniciaron sesión a través de tu sitio la cierran en tu sitio. Sin página de cierre de sesión, el widget oculta su propio botón de cerrar sesión, ya que omitir el token en la siguiente página ya cierra la sesión.",[167,1731,1733],{"id":1732},"_4-vinculación-de-cuentas","4. Vinculación de cuentas",[195,1735,1736],{},"Un lector que ya tiene una cuenta de Crowment puede vincularla desde la sección de comentarios, con el icono de enlace junto a su avatar. Inicia sesión en Crowment en una ventana emergente y confirma en una página de Crowment. A partir de entonces, tu sitio inicia su sesión con su cuenta de Crowment, y los comentarios que escribió con la cuenta de tu sitio pasan a ella.",[195,1738,1739,1740,1743,1744,1747,1748,1751],{},"La vinculación permite que tu sitio inicie la sesión de ese lector con su cuenta de Crowment ",[179,1741,1742],{},"solo en tus propias páginas","; la página de confirmación se lo indica. Puede desvincularla en cualquier momento en ",[179,1745,1746],{},"Profile → Linked sites"," de la User Console; sus comentarios se quedan con él. Puedes desactivar la vinculación con ",[179,1749,1750],{},"Account linking"," en los ajustes de SSO.",[195,1753,1754],{},"Los nombres y avatares de tu token actualizan el perfil de comentarios del lector en cada inicio de sesión. Las cuentas de Crowment vinculadas conservan su propio nombre y avatar.",[167,1756,1758],{"id":1757},"seguridad","Seguridad",[234,1760,1761,1764,1771],{},[175,1762,1763],{},"Guarda el secreto en tu servidor. Quien lo tenga puede iniciar la sesión de cualquier lector en tu sitio en nombre de cualquiera.",[175,1765,1766,1767,1770],{},"Si se filtra, elige ",[179,1768,1769],{},"Replace secret",". Los tokens firmados con el secreto anterior dejan de funcionar al instante, así que despliega el nuevo de inmediato. Los lectores que ya tenían sesión en los comentarios la mantienen.",[175,1772,1773],{},"Firma tokens solo para el lector de la petición actual y mantenlos de corta duración.",[167,1775,1777],{"id":1776},"solución-de-problemas","Solución de problemas",[284,1779,1780,1790],{},[287,1781,1782],{},[290,1783,1784,1787],{},[293,1785,1786],{},"Síntoma",[293,1788,1789],{},"Causa probable",[303,1791,1792,1811,1824,1832],{},[290,1793,1794,1799],{},[308,1795,1796],{},[187,1797,1798],{},"invalid_sso_token",[308,1800,1801,1802,1804,1805,1807,1808,1810],{},"Secreto incorrecto o sustituido, ",[187,1803,382],{}," no es la app key, un algoritmo distinto de HS256, ",[187,1806,312],{}," enviado como número, un ",[187,1809,329],{}," vacío o una duración superior a una hora.",[290,1812,1813,1818],{},[308,1814,1815],{},[187,1816,1817],{},"sso_token_expired",[308,1819,1820,1821,1823],{},"El ",[187,1822,398],{}," del token ya pasó o el reloj de tu servidor está desajustado. Firma un token nuevo por cada vista de página.",[290,1825,1826,1829],{},[308,1827,1828],{},"SSO is not enabled for this app",[308,1830,1831],{},"El modo es Off o no se creó ningún secreto.",[290,1833,1834,1837],{},[308,1835,1836],{},"Request origin does not match",[308,1838,1839],{},"La página no está en el dominio de tu widget ni en uno de sus subdominios.",[1841,1842,1843],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":421,"searchDepth":435,"depth":460,"links":1845},[1846,1847,1852,1853,1854,1855,1856],{"id":169,"depth":435,"text":170},{"id":200,"depth":435,"text":201,"children":1848},[1849,1850,1851],{"id":216,"depth":460,"text":217},{"id":231,"depth":460,"text":232},{"id":256,"depth":460,"text":257},{"id":274,"depth":435,"text":275},{"id":1378,"depth":435,"text":1379},{"id":1732,"depth":435,"text":1733},{"id":1757,"depth":435,"text":1758},{"id":1776,"depth":435,"text":1777},"Los lectores que han iniciado sesión en tu sitio también la tienen iniciada en los comentarios. Sin segunda cuenta ni segundo inicio de sesión.","md",{},{"title":93,"description":1857},"N1a9X_TflQGKPb7QZxFHWyXAHmxHk_vZDjuJroCXQJE",[1863,1865],{"title":83,"path":84,"stem":85,"description":1864,"children":-1},"Muestra a tus traductores, seguidores y VIP junto a su nombre, asignadas a mano o con inicio de sesión único.",{"title":103,"path":104,"stem":105,"description":1866,"children":-1},"Qué limitan los planes, cómo mejorar, bajar o cancelar, y qué ocurre si un pago falla o superas un límite.",1792581795250]