[{"data":1,"prerenderedAt":1867},["ShallowReactive",2],{"docs-navigation:pt-br":3,"\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fintegrations\u002Fsingle-sign-on":161,"\u002Fdocs\u002Fpt-br\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},"Pt Br","\u002Fdocs\u002Fpt-br","docs\u002Fpt-br",[14,106],{"title":15,"icon":16,"path":17,"stem":18,"children":19},"Donos de sites","i-ph:storefront-duotone","\u002Fdocs\u002Fpt-br\u002Fsite-owners","docs\u002Fpt-br\u002F1.site-owners\u002Findex",[20,23,42,64,86,96],{"title":21,"path":17,"stem":18,"icon":22},"Introdução","i-ph:house-line-duotone",{"title":24,"icon":25,"path":26,"stem":27,"children":28,"page":41},"Primeiros passos","i-ph:rocket-launch-duotone","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fgetting-started","docs\u002Fpt-br\u002F1.site-owners\u002F1.getting-started",[29,33,37],{"title":30,"path":31,"stem":32},"Início rápido","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fgetting-started\u002Fquick-start","docs\u002Fpt-br\u002F1.site-owners\u002F1.getting-started\u002F1.quick-start",{"title":34,"path":35,"stem":36},"Instalação","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fgetting-started\u002Finstallation","docs\u002Fpt-br\u002F1.site-owners\u002F1.getting-started\u002F2.installation",{"title":38,"path":39,"stem":40},"Aparência e idioma","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fgetting-started\u002Fappearance","docs\u002Fpt-br\u002F1.site-owners\u002F1.getting-started\u002F3.appearance",false,{"title":43,"icon":44,"path":45,"stem":46,"children":47,"page":41},"Moderação","i-ph:shield-check-duotone","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fmoderation","docs\u002Fpt-br\u002F1.site-owners\u002F2.moderation",[48,52,56,60],{"title":49,"path":50,"stem":51},"Como a moderação funciona","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fmoderation\u002Fhow-it-works","docs\u002Fpt-br\u002F1.site-owners\u002F2.moderation\u002F1.how-it-works",{"title":53,"path":54,"stem":55},"Moderar comentários","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fmoderation\u002Fmoderating-comments","docs\u002Fpt-br\u002F1.site-owners\u002F2.moderation\u002F2.moderating-comments",{"title":57,"path":58,"stem":59},"Regras e ciclo de vida","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fmoderation\u002Frules-and-lifecycle","docs\u002Fpt-br\u002F1.site-owners\u002F2.moderation\u002F3.rules-and-lifecycle",{"title":61,"path":62,"stem":63},"Banir comentaristas","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fmoderation\u002Fbanning-commenters","docs\u002Fpt-br\u002F1.site-owners\u002F2.moderation\u002F4.banning-commenters",{"title":65,"icon":66,"path":67,"stem":68,"children":69,"page":41},"Widgets e equipe","i-ph:app-window-duotone","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fwidgets","docs\u002Fpt-br\u002F1.site-owners\u002F3.widgets",[70,74,78,82],{"title":71,"path":72,"stem":73},"Gerenciar widgets","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fwidgets\u002Fmanaging-widgets","docs\u002Fpt-br\u002F1.site-owners\u002F3.widgets\u002F1.managing-widgets",{"title":75,"path":76,"stem":77},"Equipe e funções","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fwidgets\u002Fteam-and-roles","docs\u002Fpt-br\u002F1.site-owners\u002F3.widgets\u002F2.team-and-roles",{"title":79,"path":80,"stem":81},"Reações e emojis","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fwidgets\u002Freactions-and-emoji","docs\u002Fpt-br\u002F1.site-owners\u002F3.widgets\u002F3.reactions-and-emoji",{"title":83,"path":84,"stem":85},"Insígnias","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fwidgets\u002Fbadges","docs\u002Fpt-br\u002F1.site-owners\u002F3.widgets\u002F4.badges",{"title":87,"icon":88,"path":89,"stem":90,"children":91,"page":41},"Integrações","i-ph:plugs-connected-duotone","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fintegrations","docs\u002Fpt-br\u002F1.site-owners\u002F4.integrations",[92],{"title":93,"path":94,"stem":95},"Login único (SSO)","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fintegrations\u002Fsingle-sign-on","docs\u002Fpt-br\u002F1.site-owners\u002F4.integrations\u002F1.single-sign-on",{"title":97,"icon":98,"path":99,"stem":100,"children":101,"page":41},"Cobrança","i-ph:crown-duotone","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fbilling","docs\u002Fpt-br\u002F1.site-owners\u002F5.billing",[102],{"title":103,"path":104,"stem":105},"Planos e cobrança","\u002Fdocs\u002Fpt-br\u002Fsite-owners\u002Fbilling\u002Fplans-and-billing","docs\u002Fpt-br\u002F1.site-owners\u002F5.billing\u002F1.plans-and-billing",{"title":107,"icon":108,"path":109,"stem":110,"children":111},"Leitores","i-ph:chat-circle-text-duotone","\u002Fdocs\u002Fpt-br\u002Freaders","docs\u002Fpt-br\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\u002Fpt-br\u002Freaders\u002Fgetting-started","docs\u002Fpt-br\u002F2.readers\u002F1.getting-started",[117,121],{"title":118,"path":119,"stem":120},"Entrar na conta","\u002Fdocs\u002Fpt-br\u002Freaders\u002Fgetting-started\u002Fsigning-in","docs\u002Fpt-br\u002F2.readers\u002F1.getting-started\u002F1.signing-in",{"title":122,"path":123,"stem":124},"Seu perfil","\u002Fdocs\u002Fpt-br\u002Freaders\u002Fgetting-started\u002Fyour-profile","docs\u002Fpt-br\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\u002Fpt-br\u002Freaders\u002Fcommenting","docs\u002Fpt-br\u002F2.readers\u002F2.commenting",[131,135,139],{"title":132,"path":133,"stem":134},"Escrever comentários","\u002Fdocs\u002Fpt-br\u002Freaders\u002Fcommenting\u002Fwriting-comments","docs\u002Fpt-br\u002F2.readers\u002F2.commenting\u002F1.writing-comments",{"title":136,"path":137,"stem":138},"Ler e reagir","\u002Fdocs\u002Fpt-br\u002Freaders\u002Fcommenting\u002Freading-and-reacting","docs\u002Fpt-br\u002F2.readers\u002F2.commenting\u002F2.reading-and-reacting",{"title":140,"path":141,"stem":142},"Por que um comentário espera ou desaparece","\u002Fdocs\u002Fpt-br\u002Freaders\u002Fcommenting\u002Fwhen-comments-wait","docs\u002Fpt-br\u002F2.readers\u002F2.commenting\u002F3.when-comments-wait",{"title":144,"icon":145,"path":146,"stem":147,"children":148,"page":41},"Sua conta","i-ph:user-circle-duotone","\u002Fdocs\u002Fpt-br\u002Freaders\u002Faccount","docs\u002Fpt-br\u002F2.readers\u002F3.account",[149,153,157],{"title":150,"path":151,"stem":152},"Notificações","\u002Fdocs\u002Fpt-br\u002Freaders\u002Faccount\u002Fnotifications","docs\u002Fpt-br\u002F2.readers\u002F3.account\u002F1.notifications",{"title":154,"path":155,"stem":156},"Seus comentários e curtidas","\u002Fdocs\u002Fpt-br\u002Freaders\u002Faccount\u002Fyour-activity","docs\u002Fpt-br\u002F2.readers\u002F3.account\u002F2.your-activity",{"title":158,"path":159,"stem":160},"Sites vinculados","\u002Fdocs\u002Fpt-br\u002Freaders\u002Faccount\u002Flinked-sites","docs\u002Fpt-br\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_pt_br\u002Fdocs\u002Fpt-br\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},"como-funciona","Como funciona",[172,173,174,183,191],"ol",{},[175,176,177,178,182],"li",{},"Enquanto um leitor está conectado ao seu site, o seu ",[179,180,181],"strong",{},"servidor"," assina um token de curta duração que diz quem ele é.",[175,184,185,186,190],{},"Sua página passa esse token ao widget de comentários no atributo ",[187,188,189],"code",{},"sso-token",".",[175,192,193],{},"O Crowment confere a assinatura e conecta o leitor aos comentários com essa identidade.",[195,196,197],"p",{},"O token é assinado com um segredo que só o seu servidor e o Crowment conhecem, então ninguém consegue conectar leitores como outra pessoa. O login único está disponível em todos os planos.",[167,199,201],{"id":200},"_1-ative","1. Ative",[195,203,204,205,208],{},"Abra ",[179,206,207],{},"Site Console → seu widget → Single Sign-On",". Donos e administradores podem mudar as configurações.",[210,211,213,218,229,233,254,258],"steps",{"level":212},"3",[214,215,217],"h3",{"id":216},"crie-o-segredo-de-assinatura","Crie o segredo de assinatura",[195,219,220,221,224,225,228],{},"Só o dono do widget pode fazer isso. O segredo é mostrado ",[179,222,223],{},"uma única vez",": guarde-o nas variáveis de ambiente do seu servidor, por exemplo como ",[187,226,227],{},"CROWMENT_SSO_SECRET",". Nunca o coloque em código do navegador, no pacote de um aplicativo ou em um repositório público.",[214,230,232],{"id":231},"escolha-um-modo","Escolha um modo",[234,235,236,242,248],"ul",{},[175,237,238,241],{},[179,239,240],{},"Off",": os leitores entram somente com o Crowment.",[175,243,244,247],{},[179,245,246],{},"Optional",": leitores conectados ao seu site entram automaticamente; o login com Crowment continua disponível.",[175,249,250,253],{},[179,251,252],{},"Required",": só as contas do seu site podem entrar. Comentários e sessões existentes continuam.",[214,255,257],{"id":256},"defina-suas-páginas-de-entrada-e-saída-opcional","Defina suas páginas de entrada e saída (opcional)",[195,259,260,261,264,265,268,269,271],{},"As duas precisam estar no domínio do seu widget. O botão de login do widget leva os leitores à sua ",[179,262,263],{},"página de entrada"," com um parâmetro ",[187,266,267],{},"return_to"," que guarda a página de onde vieram. Confira se ",[187,270,267],{}," aponta para o seu próprio site antes de redirecionar.",[167,273,275],{"id":274},"_2-assine-um-token-no-seu-servidor","2. Assine um token no seu servidor",[195,277,278,279,282],{},"Assine um JWT com ",[179,280,281],{},"HS256"," e o seu segredo a cada visualização de página em que um leitor estiver conectado.",[284,285,286,302],"table",{},[287,288,289],"thead",{},[290,291,292,296,299],"tr",{},[293,294,295],"th",{},"Claim",[293,297,298],{},"Obrigatório",[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],{},"sim",[308,317,318,319,322],{},"O ID do leitor no seu site, como ",[179,320,321],{},"string",", com no máximo 128 caracteres. Use um ID que nunca mude e nunca seja reaproveitado; um endereço de e-mail é uma má escolha.",[290,324,325,330,332],{},[308,326,327],{},[187,328,329],{},"name",[308,331,315],{},[308,333,334],{},"O nome exibido ao lado dos comentários, até 100 caracteres. HTML é removido.",[290,336,337,342,345],{},[308,338,339],{},[187,340,341],{},"avatar",[308,343,344],{},"não",[308,346,347,348,351],{},"Uma URL de imagem ",[187,349,350],{},"https:\u002F\u002F",". Qualquer outra coisa é ignorada.",[290,353,354,359,361],{},[308,355,356],{},[187,357,358],{},"badges",[308,360,344],{},[308,362,363,364,367,368,371,372,375],{},"Chaves das insígnias do leitor, ex. ",[187,365,366],{},"[\"vip\"]",", iguais às chaves SSO definidas em ",[179,369,370],{},"Badges",". Se omitido, as insígnias não mudam; ",[187,373,374],{},"[]"," remove as obtidas por esta via. Insígnias dadas pelo painel permanecem.",[290,377,378,383,385],{},[308,379,380],{},[187,381,382],{},"aud",[308,384,315],{},[308,386,387],{},"A app key do seu widget, exatamente como no código de incorporação.",[290,389,390,399,401],{},[308,391,392,395,396],{},[187,393,394],{},"iat",", ",[187,397,398],{},"exp",[308,400,315],{},[308,402,403],{},"Emissão e expiração, em segundos. O token pode durar no máximo uma hora. Um minuto de diferença de relógio é tolerado.",[195,405,406,407,410],{},"Um claim ",[187,408,409],{},"email"," não é necessário nem usado: o Crowment nunca associa contas pelo e-mail.",[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-passe-o-token-ao-widget","3. Passe o token ao widget",[195,1381,1382],{},"Em páginas renderizadas no servidor, coloque o token no código de incorporação:",[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],{},"Passe um token em ",[179,1502,1503],{},"todas"," as páginas em que o leitor estiver conectado. Uma página sem token diz ao widget que o leitor saiu, e o widget também o desconecta dos comentários. Visitar mais páginas não refaz o login a cada vez: o widget mantém a sessão e só troca um token novo quando o leitor muda.",[195,1506,1507],{},"Em um aplicativo de página única, adicione e remova o atributo conforme o estado de login muda e ouça os eventos do 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],{},": o widget precisava conectar o leitor, mas o token tinha expirado. Passe um novo.",[175,1723,1724,1726],{},[187,1725,1701],{},": modo Required, sem página de entrada definida, e o leitor clicou no botão de login.",[195,1728,1729],{},"Leitores que entraram pelo seu site saem pelo seu site. Sem página de saída, o widget esconde o próprio botão de sair, já que omitir o token na próxima página já desconecta o leitor.",[167,1731,1733],{"id":1732},"_4-vinculação-de-contas","4. Vinculação de contas",[195,1735,1736],{},"Um leitor que já tem uma conta Crowment pode vinculá-la na seção de comentários, pelo ícone de link ao lado do avatar. Ele entra no Crowment em uma janela pop-up e confirma em uma página do Crowment. A partir daí, seu site o conecta com a conta Crowment, e os comentários que ele escreveu com a conta do seu site passam para ela.",[195,1738,1739,1740,1743,1744,1747,1748,1751],{},"A vinculação permite que seu site conecte esse leitor com a conta Crowment ",[179,1741,1742],{},"apenas nas suas próprias páginas","; a página de confirmação avisa isso. Ele pode desvincular quando quiser em ",[179,1745,1746],{},"Profile → Linked sites",", no User Console; os comentários continuam com ele. Você pode desligar a vinculação em ",[179,1749,1750],{},"Account linking",", nas configurações de SSO.",[195,1753,1754],{},"Nomes e avatares do seu token atualizam o perfil de comentários do leitor a cada login. Contas Crowment vinculadas mantêm o próprio nome e avatar.",[167,1756,1758],{"id":1757},"segurança","Segurança",[234,1760,1761,1764,1771],{},[175,1762,1763],{},"Mantenha o segredo no seu servidor. Quem tiver o segredo consegue conectar leitores como qualquer pessoa no seu site.",[175,1765,1766,1767,1770],{},"Se ele vazar, escolha ",[179,1768,1769],{},"Replace secret",". Tokens assinados com o segredo antigo param de funcionar na hora, então publique o novo imediatamente. Leitores já conectados aos comentários continuam conectados.",[175,1772,1773],{},"Assine tokens apenas para o leitor da requisição atual e mantenha-os com vida curta.",[167,1775,1777],{"id":1776},"solução-de-problemas","Solução de problemas",[284,1779,1780,1790],{},[287,1781,1782],{},[290,1783,1784,1787],{},[293,1785,1786],{},"Sintoma",[293,1788,1789],{},"Causa provável",[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],{},"Segredo errado ou substituído, ",[187,1803,382],{}," diferente da app key, algoritmo diferente de HS256, ",[187,1806,312],{}," enviado como número, ",[187,1809,329],{}," vazio ou duração acima de uma hora.",[290,1812,1813,1818],{},[308,1814,1815],{},[187,1816,1817],{},"sso_token_expired",[308,1819,1820,1821,1823],{},"O ",[187,1822,398],{}," do token já passou ou o relógio do seu servidor está errado. Assine um token novo a cada visualização de página.",[290,1825,1826,1829],{},[308,1827,1828],{},"SSO is not enabled for this app",[308,1830,1831],{},"O modo está em Off ou nenhum segredo foi criado.",[290,1833,1834,1837],{},[308,1835,1836],{},"Request origin does not match",[308,1838,1839],{},"A página não está no domínio do seu widget nem em um de seus subdomínios.",[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},"Leitores conectados ao seu site também ficam conectados aos comentários. Sem segunda conta, sem segundo login.","md",{},{"title":93,"description":1857},"feEJrZMrwqnRpIzAqMSX-CapQZKBbQWAcrgIgOyvhoQ",[1863,1865],{"title":83,"path":84,"stem":85,"description":1864,"children":-1},"Mostre seus tradutores, apoiadores e VIPs ao lado do nome, atribuídas à mão ou por login único.",{"title":103,"path":104,"stem":105,"description":1866,"children":-1},"O que os planos limitam, como fazer upgrade, downgrade ou cancelar, e o que acontece se um pagamento falhar ou você passar de um limite.",1792581800240]