[{"data":1,"prerenderedAt":1860},["ShallowReactive",2],{"docs-navigation:ja":3,"\u002Fdocs\u002Fja\u002Fsite-owners\u002Fintegrations\u002Fsingle-sign-on":160,"\u002Fdocs\u002Fja\u002Fsite-owners\u002Fintegrations\u002Fsingle-sign-on:surround":1855},[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},"Ja","\u002Fdocs\u002Fja","docs\u002Fja",[14,105],{"title":15,"icon":16,"path":17,"stem":18,"children":19},"サイト運営者","i-ph:storefront-duotone","\u002Fdocs\u002Fja\u002Fsite-owners","docs\u002Fja\u002F1.site-owners\u002Findex",[20,23,42,64,86,96],{"title":21,"path":17,"stem":18,"icon":22},"はじめに","i-ph:house-line-duotone",{"title":24,"icon":25,"path":26,"stem":27,"children":28,"page":41},"スタートガイド","i-ph:rocket-launch-duotone","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fgetting-started","docs\u002Fja\u002F1.site-owners\u002F1.getting-started",[29,33,37],{"title":30,"path":31,"stem":32},"クイックスタート","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fgetting-started\u002Fquick-start","docs\u002Fja\u002F1.site-owners\u002F1.getting-started\u002F1.quick-start",{"title":34,"path":35,"stem":36},"インストール","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fgetting-started\u002Finstallation","docs\u002Fja\u002F1.site-owners\u002F1.getting-started\u002F2.installation",{"title":38,"path":39,"stem":40},"外観と言語","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fgetting-started\u002Fappearance","docs\u002Fja\u002F1.site-owners\u002F1.getting-started\u002F3.appearance",false,{"title":43,"icon":44,"path":45,"stem":46,"children":47,"page":41},"モデレーション","i-ph:shield-check-duotone","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fmoderation","docs\u002Fja\u002F1.site-owners\u002F2.moderation",[48,52,56,60],{"title":49,"path":50,"stem":51},"モデレーションの仕組み","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fmoderation\u002Fhow-it-works","docs\u002Fja\u002F1.site-owners\u002F2.moderation\u002F1.how-it-works",{"title":53,"path":54,"stem":55},"コメントのモデレーション","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fmoderation\u002Fmoderating-comments","docs\u002Fja\u002F1.site-owners\u002F2.moderation\u002F2.moderating-comments",{"title":57,"path":58,"stem":59},"ルールとライフサイクル","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fmoderation\u002Frules-and-lifecycle","docs\u002Fja\u002F1.site-owners\u002F2.moderation\u002F3.rules-and-lifecycle",{"title":61,"path":62,"stem":63},"コメント投稿者のブロック","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fmoderation\u002Fbanning-commenters","docs\u002Fja\u002F1.site-owners\u002F2.moderation\u002F4.banning-commenters",{"title":65,"icon":66,"path":67,"stem":68,"children":69,"page":41},"ウィジェットとチーム","i-ph:app-window-duotone","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fwidgets","docs\u002Fja\u002F1.site-owners\u002F3.widgets",[70,74,78,82],{"title":71,"path":72,"stem":73},"ウィジェットの管理","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fwidgets\u002Fmanaging-widgets","docs\u002Fja\u002F1.site-owners\u002F3.widgets\u002F1.managing-widgets",{"title":75,"path":76,"stem":77},"チームとロール","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fwidgets\u002Fteam-and-roles","docs\u002Fja\u002F1.site-owners\u002F3.widgets\u002F2.team-and-roles",{"title":79,"path":80,"stem":81},"リアクションと絵文字","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fwidgets\u002Freactions-and-emoji","docs\u002Fja\u002F1.site-owners\u002F3.widgets\u002F3.reactions-and-emoji",{"title":83,"path":84,"stem":85},"バッジ","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fwidgets\u002Fbadges","docs\u002Fja\u002F1.site-owners\u002F3.widgets\u002F4.badges",{"title":87,"icon":88,"path":89,"stem":90,"children":91,"page":41},"連携","i-ph:plugs-connected-duotone","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fintegrations","docs\u002Fja\u002F1.site-owners\u002F4.integrations",[92],{"title":93,"path":94,"stem":95},"シングルサインオン（SSO）","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fintegrations\u002Fsingle-sign-on","docs\u002Fja\u002F1.site-owners\u002F4.integrations\u002F1.single-sign-on",{"title":97,"icon":98,"path":99,"stem":100,"children":101,"page":41},"料金と請求","i-ph:crown-duotone","\u002Fdocs\u002Fja\u002Fsite-owners\u002Fbilling","docs\u002Fja\u002F1.site-owners\u002F5.billing",[102],{"title":97,"path":103,"stem":104},"\u002Fdocs\u002Fja\u002Fsite-owners\u002Fbilling\u002Fplans-and-billing","docs\u002Fja\u002F1.site-owners\u002F5.billing\u002F1.plans-and-billing",{"title":106,"icon":107,"path":108,"stem":109,"children":110},"読者","i-ph:chat-circle-text-duotone","\u002Fdocs\u002Fja\u002Freaders","docs\u002Fja\u002F2.readers\u002Findex",[111,112,124,142],{"title":21,"path":108,"stem":109,"icon":22},{"title":24,"icon":25,"path":113,"stem":114,"children":115,"page":41},"\u002Fdocs\u002Fja\u002Freaders\u002Fgetting-started","docs\u002Fja\u002F2.readers\u002F1.getting-started",[116,120],{"title":117,"path":118,"stem":119},"ログイン","\u002Fdocs\u002Fja\u002Freaders\u002Fgetting-started\u002Fsigning-in","docs\u002Fja\u002F2.readers\u002F1.getting-started\u002F1.signing-in",{"title":121,"path":122,"stem":123},"プロフィール","\u002Fdocs\u002Fja\u002Freaders\u002Fgetting-started\u002Fyour-profile","docs\u002Fja\u002F2.readers\u002F1.getting-started\u002F2.your-profile",{"title":125,"icon":126,"path":127,"stem":128,"children":129,"page":41},"コメントする","i-ph:chats-circle-duotone","\u002Fdocs\u002Fja\u002Freaders\u002Fcommenting","docs\u002Fja\u002F2.readers\u002F2.commenting",[130,134,138],{"title":131,"path":132,"stem":133},"コメントを書く","\u002Fdocs\u002Fja\u002Freaders\u002Fcommenting\u002Fwriting-comments","docs\u002Fja\u002F2.readers\u002F2.commenting\u002F1.writing-comments",{"title":135,"path":136,"stem":137},"読む・反応する","\u002Fdocs\u002Fja\u002Freaders\u002Fcommenting\u002Freading-and-reacting","docs\u002Fja\u002F2.readers\u002F2.commenting\u002F2.reading-and-reacting",{"title":139,"path":140,"stem":141},"コメントが保留になる・消える理由","\u002Fdocs\u002Fja\u002Freaders\u002Fcommenting\u002Fwhen-comments-wait","docs\u002Fja\u002F2.readers\u002F2.commenting\u002F3.when-comments-wait",{"title":143,"icon":144,"path":145,"stem":146,"children":147,"page":41},"アカウント","i-ph:user-circle-duotone","\u002Fdocs\u002Fja\u002Freaders\u002Faccount","docs\u002Fja\u002F2.readers\u002F3.account",[148,152,156],{"title":149,"path":150,"stem":151},"通知","\u002Fdocs\u002Fja\u002Freaders\u002Faccount\u002Fnotifications","docs\u002Fja\u002F2.readers\u002F3.account\u002F1.notifications",{"title":153,"path":154,"stem":155},"あなたのコメントといいね","\u002Fdocs\u002Fja\u002Freaders\u002Faccount\u002Fyour-activity","docs\u002Fja\u002F2.readers\u002F3.account\u002F2.your-activity",{"title":157,"path":158,"stem":159},"連携済みサイト","\u002Fdocs\u002Fja\u002Freaders\u002Faccount\u002Flinked-sites","docs\u002Fja\u002F2.readers\u002F3.account\u002F3.linked-sites",{"id":161,"title":93,"body":162,"description":1850,"extension":1851,"meta":1852,"navigation":456,"path":94,"seo":1853,"stem":95,"__hash__":1854},"docs_ja\u002Fdocs\u002Fja\u002F1.site-owners\u002F4.integrations\u002F1.single-sign-on.md",{"type":163,"value":164,"toc":1837},"minimark",[165,169,192,196,200,206,267,271,278,398,404,1371,1375,1378,1493,1500,1503,1710,1722,1725,1729,1732,1747,1750,1753,1768,1771,1833],[166,167,168],"h2",{"id":168},"仕組み",[170,171,172,181,189],"ol",{},[173,174,175,176,180],"li",{},"読者があなたのサイトにログインしている間、あなたの",[177,178,179],"strong",{},"サーバー","が、その読者が誰であるかを示す短命のトークンに署名します。",[173,182,183,184,188],{},"ページは、そのトークンを ",[185,186,187],"code",{},"sso-token"," 属性でコメントウィジェットに渡します。",[173,190,191],{},"Crowment が署名を検証し、その身元で読者をコメントにログインさせます。",[193,194,195],"p",{},"トークンは、あなたのサーバーと Crowment だけが知るシークレットで署名されるため、誰かが他人になりすまして読者をログインさせることはできません。シングルサインオンはすべてのプランで利用できます。",[166,197,199],{"id":198},"_1-有効にする","1. 有効にする",[193,201,202,205],{},[177,203,204],{},"Site Console → ウィジェット → Single Sign-On"," を開きます。設定はオーナーと管理者が変更できます。",[207,208,210,214,225,228,249,253],"steps",{"level":209},"3",[211,212,213],"h3",{"id":213},"署名用シークレットを作成する",[193,215,216,217,220,221,224],{},"これを行えるのはウィジェットのオーナーだけです。シークレットは ",[177,218,219],{},"1 回だけ","表示されます。たとえば ",[185,222,223],{},"CROWMENT_SSO_SECRET"," として、サーバーの環境変数に保存してください。ブラウザで動くコード、アプリのバンドル、公開リポジトリには絶対に含めないでください。",[211,226,227],{"id":227},"モードを選ぶ",[229,230,231,237,243],"ul",{},[173,232,233,236],{},[177,234,235],{},"Off","：読者は Crowment でのみログインします。",[173,238,239,242],{},[177,240,241],{},"Optional","：あなたのサイトにログインしている読者は自動的にログインします。Crowment でのログインも引き続き利用できます。",[173,244,245,248],{},[177,246,247],{},"Required","：あなたのサイトのアカウントだけがログインできます。既存のコメントとセッションはそのまま残ります。",[211,250,252],{"id":251},"ログインページとログアウトページを設定する任意","ログインページとログアウトページを設定する（任意）",[193,254,255,256,259,260,263,264,266],{},"どちらもウィジェットのドメイン上にある必要があります。ウィジェットのログインボタンは、読者が元いたページを示す ",[185,257,258],{},"return_to"," パラメータ付きで、あなたの",[177,261,262],{},"ログインページ","に読者を送ります。リダイレクトする前に、",[185,265,258],{}," が自分のサイトを指していることを確認してください。",[166,268,270],{"id":269},"_2-サーバーでトークンに署名する","2. サーバーでトークンに署名する",[193,272,273,274,277],{},"読者がログインしているページが表示されるたびに、",[177,275,276],{},"HS256"," とシークレットで JWT に署名します。",[279,280,281,297],"table",{},[282,283,284],"thead",{},[285,286,287,291,294],"tr",{},[288,289,290],"th",{},"Claim",[288,292,293],{},"必須",[288,295,296],{},"値",[298,299,300,318,330,346,370,382],"tbody",{},[285,301,302,308,311],{},[303,304,305],"td",{},[185,306,307],{},"sub",[303,309,310],{},"はい",[303,312,313,314,317],{},"あなたのサイトでの読者のユーザー ID。",[177,315,316],{},"文字列","で、128 文字以内。変わることも再利用されることもない ID を使ってください。メールアドレスは適しません。",[285,319,320,325,327],{},[303,321,322],{},[185,323,324],{},"name",[303,326,310],{},[303,328,329],{},"コメントの横に表示される名前。100 文字以内。HTML は除去されます。",[285,331,332,337,340],{},[303,333,334],{},[185,335,336],{},"avatar",[303,338,339],{},"いいえ",[303,341,342,345],{},[185,343,344],{},"https:\u002F\u002F"," の画像 URL。それ以外は無視されます。",[285,347,348,353,355],{},[303,349,350],{},[185,351,352],{},"badges",[303,354,339],{},[303,356,357,358,361,362,365,366,369],{},"読者が持つバッジのキー（例: ",[185,359,360],{},"[\"vip\"]","）。",[177,363,364],{},"Badges"," で設定した SSO キーと一致させます。省略するとバッジは変わりません。",[185,367,368],{},"[]"," はこの方法で付与されたバッジを外します。ダッシュボードで付与したバッジは残ります。",[285,371,372,377,379],{},[303,373,374],{},[185,375,376],{},"aud",[303,378,310],{},[303,380,381],{},"ウィジェットのアプリキー。埋め込みコードと完全に同じ値です。",[285,383,384,393,395],{},[303,385,386,389,390],{},[185,387,388],{},"iat","、",[185,391,392],{},"exp",[303,394,310],{},[303,396,397],{},"発行時刻と有効期限（秒）。トークンの有効期間は最大 1 時間です。1 分までの時計のずれは許容されます。",[193,399,400,403],{},[185,401,402],{},"email"," クレームは不要で、使われません。Crowment がメールアドレスでアカウントを照合することはありません。",[405,406,407,609,851,1121],"code-group",{},[408,409,415],"pre",{"className":410,"code":411,"filename":412,"language":413,"meta":414,"style":414},"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","",[185,416,417,426,451,458,484,541,559,603],{"__ignoreMap":414},[418,419,422],"span",{"class":420,"line":421},"line",1,[418,423,425],{"class":424},"sHwdD","\u002F\u002F npm install jsonwebtoken\n",[418,427,429,433,437,440,444,448],{"class":420,"line":428},2,[418,430,432],{"class":431},"s7zQu","import",[418,434,436],{"class":435},"sTEyZ"," jwt ",[418,438,439],{"class":431},"from",[418,441,443],{"class":442},"sMK4o"," '",[418,445,447],{"class":446},"sfazB","jsonwebtoken",[418,449,450],{"class":442},"'\n",[418,452,454],{"class":420,"line":453},3,[418,455,457],{"emptyLinePlaceholder":456},true,"\n",[418,459,461,465,468,471,474,477,481],{"class":420,"line":460},4,[418,462,464],{"class":463},"spNyl","const",[418,466,467],{"class":435}," ssoToken ",[418,469,470],{"class":442},"=",[418,472,473],{"class":435}," jwt",[418,475,476],{"class":442},".",[418,478,480],{"class":479},"s2Zo4","sign",[418,482,483],{"class":435},"(\n",[418,485,487,490,494,497,500,503,505,508,511,514,516,519,521,524,526,529,531,533,535,538],{"class":420,"line":486},5,[418,488,489],{"class":442},"  {",[418,491,493],{"class":492},"swJcz"," sub",[418,495,496],{"class":442},":",[418,498,499],{"class":479}," String",[418,501,502],{"class":435},"(user",[418,504,476],{"class":442},[418,506,507],{"class":435},"id)",[418,509,510],{"class":442},",",[418,512,513],{"class":492}," name",[418,515,496],{"class":442},[418,517,518],{"class":435}," user",[418,520,476],{"class":442},[418,522,523],{"class":435},"displayName",[418,525,510],{"class":442},[418,527,528],{"class":492}," avatar",[418,530,496],{"class":442},[418,532,518],{"class":435},[418,534,476],{"class":442},[418,536,537],{"class":435},"avatarUrl ",[418,539,540],{"class":442},"},\n",[418,542,544,547,549,552,554,556],{"class":420,"line":543},6,[418,545,546],{"class":435},"  process",[418,548,476],{"class":442},[418,550,551],{"class":435},"env",[418,553,476],{"class":442},[418,555,223],{"class":435},[418,557,558],{"class":442},",\n",[418,560,562,564,567,569,571,573,576,578,581,583,586,588,591,593,595,598,600],{"class":420,"line":561},7,[418,563,489],{"class":442},[418,565,566],{"class":492}," algorithm",[418,568,496],{"class":442},[418,570,443],{"class":442},[418,572,276],{"class":446},[418,574,575],{"class":442},"'",[418,577,510],{"class":442},[418,579,580],{"class":492}," audience",[418,582,496],{"class":442},[418,584,585],{"class":435}," CROWMENT_APP_KEY",[418,587,510],{"class":442},[418,589,590],{"class":492}," expiresIn",[418,592,496],{"class":442},[418,594,443],{"class":442},[418,596,597],{"class":446},"1h",[418,599,575],{"class":442},[418,601,602],{"class":442}," },\n",[418,604,606],{"class":420,"line":605},8,[418,607,608],{"class":435},")\n",[408,610,615],{"className":611,"code":612,"filename":613,"language":614,"meta":414,"style":414},"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",[185,616,617,622,644,648,664,686,721,743,765,780,798,821],{"__ignoreMap":414},[418,618,619],{"class":420,"line":421},[418,620,621],{"class":424},"\u002F\u002F composer require firebase\u002Fphp-jwt\n",[418,623,624,628,631,634,637,639,641],{"class":420,"line":428},[418,625,627],{"class":626},"sbssI","use",[418,629,630],{"class":435}," Firebase",[418,632,633],{"class":442},"\\",[418,635,636],{"class":435},"JWT",[418,638,633],{"class":442},[418,640,636],{"class":435},[418,642,643],{"class":442},";\n",[418,645,646],{"class":420,"line":453},[418,647,457],{"emptyLinePlaceholder":456},[418,649,650,653,656,658,661],{"class":420,"line":460},[418,651,652],{"class":442},"$",[418,654,655],{"class":435},"now ",[418,657,470],{"class":442},[418,659,660],{"class":479}," time",[418,662,663],{"class":442},"();\n",[418,665,666,668,671,673,677,680,683],{"class":420,"line":486},[418,667,652],{"class":442},[418,669,670],{"class":435},"ssoToken ",[418,672,470],{"class":442},[418,674,676],{"class":675},"sBMFI"," JWT",[418,678,679],{"class":442},"::",[418,681,682],{"class":479},"encode",[418,684,685],{"class":442},"([\n",[418,687,688,691,693,695,698,701,704,707,710,713,716,719],{"class":420,"line":543},[418,689,690],{"class":442},"    '",[418,692,307],{"class":446},[418,694,575],{"class":442},[418,696,697],{"class":442},"    =>",[418,699,700],{"class":442}," (",[418,702,703],{"class":463},"string",[418,705,706],{"class":442},")",[418,708,709],{"class":442}," $",[418,711,712],{"class":435},"user",[418,714,715],{"class":442},"->",[418,717,718],{"class":435},"id",[418,720,558],{"class":442},[418,722,723,725,727,729,732,734,736,738,741],{"class":420,"line":561},[418,724,690],{"class":442},[418,726,324],{"class":446},[418,728,575],{"class":442},[418,730,731],{"class":442},"   =>",[418,733,709],{"class":442},[418,735,712],{"class":435},[418,737,715],{"class":442},[418,739,740],{"class":435},"display_name",[418,742,558],{"class":442},[418,744,745,747,749,751,754,756,758,760,763],{"class":420,"line":605},[418,746,690],{"class":442},[418,748,336],{"class":446},[418,750,575],{"class":442},[418,752,753],{"class":442}," =>",[418,755,709],{"class":442},[418,757,712],{"class":435},[418,759,715],{"class":442},[418,761,762],{"class":435},"avatar_url",[418,764,558],{"class":442},[418,766,768,770,772,774,776,778],{"class":420,"line":767},9,[418,769,690],{"class":442},[418,771,376],{"class":446},[418,773,575],{"class":442},[418,775,697],{"class":442},[418,777,585],{"class":435},[418,779,558],{"class":442},[418,781,783,785,787,789,791,793,796],{"class":420,"line":782},10,[418,784,690],{"class":442},[418,786,388],{"class":446},[418,788,575],{"class":442},[418,790,697],{"class":442},[418,792,709],{"class":442},[418,794,795],{"class":435},"now",[418,797,558],{"class":442},[418,799,801,803,805,807,809,811,813,816,819],{"class":420,"line":800},11,[418,802,690],{"class":442},[418,804,392],{"class":446},[418,806,575],{"class":442},[418,808,697],{"class":442},[418,810,709],{"class":442},[418,812,655],{"class":435},[418,814,815],{"class":442},"+",[418,817,818],{"class":626}," 3600",[418,820,558],{"class":442},[418,822,824,827,830,833,835,837,839,842,844,846,848],{"class":420,"line":823},12,[418,825,826],{"class":442},"],",[418,828,829],{"class":479}," getenv",[418,831,832],{"class":442},"(",[418,834,575],{"class":442},[418,836,223],{"class":446},[418,838,575],{"class":442},[418,840,841],{"class":442},"),",[418,843,443],{"class":442},[418,845,276],{"class":446},[418,847,575],{"class":442},[418,849,850],{"class":442},");\n",[408,852,857],{"className":853,"code":854,"filename":855,"language":856,"meta":414,"style":414},"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",[185,858,859,864,871,893,900,904,928,943,948,974,992,1010,1024,1040,1071,1077,1100,1116],{"__ignoreMap":414},[418,860,861],{"class":420,"line":421},[418,862,863],{"class":424},"# pip install pyjwt\n",[418,865,866,868],{"class":420,"line":428},[418,867,432],{"class":431},[418,869,870],{"class":435}," os\n",[418,872,873,875,878,880,883,885,888,890],{"class":420,"line":453},[418,874,439],{"class":431},[418,876,877],{"class":435}," datetime ",[418,879,432],{"class":431},[418,881,882],{"class":435}," datetime",[418,884,510],{"class":442},[418,886,887],{"class":435}," timedelta",[418,889,510],{"class":442},[418,891,892],{"class":435}," timezone\n",[418,894,895,897],{"class":420,"line":460},[418,896,432],{"class":431},[418,898,899],{"class":435}," jwt\n",[418,901,902],{"class":420,"line":486},[418,903,457],{"emptyLinePlaceholder":456},[418,905,906,908,910,912,914,916,918,921,923,926],{"class":420,"line":543},[418,907,655],{"class":435},[418,909,470],{"class":442},[418,911,882],{"class":435},[418,913,476],{"class":442},[418,915,795],{"class":479},[418,917,832],{"class":442},[418,919,920],{"class":479},"timezone",[418,922,476],{"class":442},[418,924,925],{"class":492},"utc",[418,927,608],{"class":442},[418,929,930,933,935,937,939,941],{"class":420,"line":561},[418,931,932],{"class":435},"sso_token ",[418,934,470],{"class":442},[418,936,473],{"class":435},[418,938,476],{"class":442},[418,940,682],{"class":479},[418,942,483],{"class":442},[418,944,945],{"class":420,"line":605},[418,946,947],{"class":442},"    {\n",[418,949,950,953,955,958,960,963,965,967,969,971],{"class":420,"line":767},[418,951,952],{"class":442},"        \"",[418,954,307],{"class":446},[418,956,957],{"class":442},"\"",[418,959,496],{"class":442},[418,961,962],{"class":675}," str",[418,964,832],{"class":442},[418,966,712],{"class":479},[418,968,476],{"class":442},[418,970,718],{"class":492},[418,972,973],{"class":442},"),\n",[418,975,976,978,980,982,984,986,988,990],{"class":420,"line":782},[418,977,952],{"class":442},[418,979,324],{"class":446},[418,981,957],{"class":442},[418,983,496],{"class":442},[418,985,518],{"class":479},[418,987,476],{"class":442},[418,989,740],{"class":492},[418,991,558],{"class":442},[418,993,994,996,998,1000,1002,1004,1006,1008],{"class":420,"line":800},[418,995,952],{"class":442},[418,997,336],{"class":446},[418,999,957],{"class":442},[418,1001,496],{"class":442},[418,1003,518],{"class":479},[418,1005,476],{"class":442},[418,1007,762],{"class":492},[418,1009,558],{"class":442},[418,1011,1012,1014,1016,1018,1020,1022],{"class":420,"line":823},[418,1013,952],{"class":442},[418,1015,376],{"class":446},[418,1017,957],{"class":442},[418,1019,496],{"class":442},[418,1021,585],{"class":479},[418,1023,558],{"class":442},[418,1025,1027,1029,1031,1033,1035,1038],{"class":420,"line":1026},13,[418,1028,952],{"class":442},[418,1030,388],{"class":446},[418,1032,957],{"class":442},[418,1034,496],{"class":442},[418,1036,1037],{"class":479}," now",[418,1039,558],{"class":442},[418,1041,1043,1045,1047,1049,1051,1054,1056,1058,1060,1064,1066,1069],{"class":420,"line":1042},14,[418,1044,952],{"class":442},[418,1046,392],{"class":446},[418,1048,957],{"class":442},[418,1050,496],{"class":442},[418,1052,1053],{"class":479}," now ",[418,1055,815],{"class":442},[418,1057,887],{"class":479},[418,1059,832],{"class":442},[418,1061,1063],{"class":1062},"sHdIc","hours",[418,1065,470],{"class":442},[418,1067,1068],{"class":626},"1",[418,1070,973],{"class":442},[418,1072,1074],{"class":420,"line":1073},15,[418,1075,1076],{"class":442},"    },\n",[418,1078,1080,1083,1085,1088,1091,1093,1095,1097],{"class":420,"line":1079},16,[418,1081,1082],{"class":479},"    os",[418,1084,476],{"class":442},[418,1086,1087],{"class":492},"environ",[418,1089,1090],{"class":442},"[",[418,1092,957],{"class":442},[418,1094,223],{"class":446},[418,1096,957],{"class":442},[418,1098,1099],{"class":442},"],\n",[418,1101,1103,1106,1108,1110,1112,1114],{"class":420,"line":1102},17,[418,1104,1105],{"class":1062},"    algorithm",[418,1107,470],{"class":442},[418,1109,957],{"class":442},[418,1111,276],{"class":446},[418,1113,957],{"class":442},[418,1115,558],{"class":442},[418,1117,1119],{"class":420,"line":1118},18,[418,1120,608],{"class":442},[408,1122,1127],{"className":1123,"code":1124,"filename":1125,"language":1126,"meta":414,"style":414},"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",[185,1128,1129,1134,1151,1192,1227,1247,1266,1281,1302,1336],{"__ignoreMap":414},[418,1130,1131],{"class":420,"line":421},[418,1132,1133],{"class":424},"\u002F\u002F go get github.com\u002Fgolang-jwt\u002Fjwt\u002Fv5\n",[418,1135,1136,1138,1141,1143,1145,1148],{"class":420,"line":428},[418,1137,655],{"class":435},[418,1139,1140],{"class":442},":=",[418,1142,660],{"class":435},[418,1144,476],{"class":442},[418,1146,1147],{"class":479},"Now",[418,1149,1150],{"class":442},"()\n",[418,1152,1153,1156,1158,1161,1163,1165,1167,1170,1172,1175,1177,1180,1182,1184,1186,1189],{"class":420,"line":453},[418,1154,1155],{"class":435},"ssoToken",[418,1157,510],{"class":442},[418,1159,1160],{"class":435}," err ",[418,1162,1140],{"class":442},[418,1164,473],{"class":435},[418,1166,476],{"class":442},[418,1168,1169],{"class":479},"NewWithClaims",[418,1171,832],{"class":442},[418,1173,1174],{"class":435},"jwt",[418,1176,476],{"class":442},[418,1178,1179],{"class":435},"SigningMethodHS256",[418,1181,510],{"class":442},[418,1183,473],{"class":675},[418,1185,476],{"class":442},[418,1187,1188],{"class":675},"MapClaims",[418,1190,1191],{"class":442},"{\n",[418,1193,1194,1197,1199,1201,1203,1206,1208,1211,1213,1215,1217,1220,1222,1225],{"class":420,"line":460},[418,1195,1196],{"class":442},"    \"",[418,1198,307],{"class":446},[418,1200,957],{"class":442},[418,1202,496],{"class":442},[418,1204,1205],{"class":435},"    strconv",[418,1207,476],{"class":442},[418,1209,1210],{"class":479},"FormatInt",[418,1212,832],{"class":442},[418,1214,712],{"class":435},[418,1216,476],{"class":442},[418,1218,1219],{"class":435},"ID",[418,1221,510],{"class":442},[418,1223,1224],{"class":626}," 10",[418,1226,973],{"class":442},[418,1228,1229,1231,1233,1235,1237,1240,1242,1245],{"class":420,"line":486},[418,1230,1196],{"class":442},[418,1232,324],{"class":446},[418,1234,957],{"class":442},[418,1236,496],{"class":442},[418,1238,1239],{"class":435},"   user",[418,1241,476],{"class":442},[418,1243,1244],{"class":435},"DisplayName",[418,1246,558],{"class":442},[418,1248,1249,1251,1253,1255,1257,1259,1261,1264],{"class":420,"line":543},[418,1250,1196],{"class":442},[418,1252,336],{"class":446},[418,1254,957],{"class":442},[418,1256,496],{"class":442},[418,1258,518],{"class":435},[418,1260,476],{"class":442},[418,1262,1263],{"class":435},"AvatarURL",[418,1265,558],{"class":442},[418,1267,1268,1270,1272,1274,1276,1279],{"class":420,"line":561},[418,1269,1196],{"class":442},[418,1271,376],{"class":446},[418,1273,957],{"class":442},[418,1275,496],{"class":442},[418,1277,1278],{"class":435},"    crowmentAppKey",[418,1280,558],{"class":442},[418,1282,1283,1285,1287,1289,1291,1294,1296,1299],{"class":420,"line":605},[418,1284,1196],{"class":442},[418,1286,388],{"class":446},[418,1288,957],{"class":442},[418,1290,496],{"class":442},[418,1292,1293],{"class":435},"    now",[418,1295,476],{"class":442},[418,1297,1298],{"class":479},"Unix",[418,1300,1301],{"class":442},"(),\n",[418,1303,1304,1306,1308,1310,1312,1314,1316,1319,1321,1324,1326,1329,1332,1334],{"class":420,"line":767},[418,1305,1196],{"class":442},[418,1307,392],{"class":446},[418,1309,957],{"class":442},[418,1311,496],{"class":442},[418,1313,1293],{"class":435},[418,1315,476],{"class":442},[418,1317,1318],{"class":479},"Add",[418,1320,832],{"class":442},[418,1322,1323],{"class":435},"time",[418,1325,476],{"class":442},[418,1327,1328],{"class":435},"Hour",[418,1330,1331],{"class":442},").",[418,1333,1298],{"class":479},[418,1335,1301],{"class":442},[418,1337,1338,1341,1344,1347,1350,1352,1355,1357,1360,1362,1364,1366,1368],{"class":420,"line":782},[418,1339,1340],{"class":442},"}).",[418,1342,1343],{"class":479},"SignedString",[418,1345,1346],{"class":442},"([]",[418,1348,1349],{"class":463},"byte",[418,1351,832],{"class":442},[418,1353,1354],{"class":435},"os",[418,1356,476],{"class":442},[418,1358,1359],{"class":479},"Getenv",[418,1361,832],{"class":442},[418,1363,957],{"class":442},[418,1365,223],{"class":446},[418,1367,957],{"class":442},[418,1369,1370],{"class":442},")))\n",[166,1372,1374],{"id":1373},"_3-ウィジェットに渡す","3. ウィジェットに渡す",[193,1376,1377],{},"サーバーでレンダリングするページでは、トークンを埋め込みコードに入れます。",[408,1379,1383],{"className":1380,"code":1381,"language":1382,"meta":414,"style":414},"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",[185,1384,1385,1416,1420,1425,1462,1466,1471],{"__ignoreMap":414},[418,1386,1387,1390,1393,1396,1399,1401,1403,1406,1408,1411,1413],{"class":420,"line":421},[418,1388,1389],{"class":442},"\u003C",[418,1391,1392],{"class":492},"script",[418,1394,1395],{"class":463}," defer",[418,1397,1398],{"class":463}," src",[418,1400,470],{"class":442},[418,1402,957],{"class":442},[418,1404,1405],{"class":446},"https:\u002F\u002Fembeds.crowment.com\u002Fcomments.js",[418,1407,957],{"class":442},[418,1409,1410],{"class":442},">\u003C\u002F",[418,1412,1392],{"class":492},[418,1414,1415],{"class":442},">\n",[418,1417,1418],{"class":420,"line":428},[418,1419,457],{"emptyLinePlaceholder":456},[418,1421,1422],{"class":420,"line":453},[418,1423,1424],{"class":424},"\u003C!-- signed in: pass the token your backend signed for this page view -->\n",[418,1426,1427,1429,1432,1435,1437,1439,1442,1444,1447,1449,1451,1454,1456,1458,1460],{"class":420,"line":460},[418,1428,1389],{"class":442},[418,1430,1431],{"class":492},"crow-comments",[418,1433,1434],{"class":463}," app-key",[418,1436,470],{"class":442},[418,1438,957],{"class":442},[418,1440,1441],{"class":446},"YOUR_APP_KEY",[418,1443,957],{"class":442},[418,1445,1446],{"class":463}," sso-token",[418,1448,470],{"class":442},[418,1450,957],{"class":442},[418,1452,1453],{"class":446},"SIGNED_TOKEN",[418,1455,957],{"class":442},[418,1457,1410],{"class":442},[418,1459,1431],{"class":492},[418,1461,1415],{"class":442},[418,1463,1464],{"class":420,"line":486},[418,1465,457],{"emptyLinePlaceholder":456},[418,1467,1468],{"class":420,"line":543},[418,1469,1470],{"class":424},"\u003C!-- signed out: leave sso-token out -->\n",[418,1472,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491],{"class":420,"line":561},[418,1474,1389],{"class":442},[418,1476,1431],{"class":492},[418,1478,1434],{"class":463},[418,1480,470],{"class":442},[418,1482,957],{"class":442},[418,1484,1441],{"class":446},[418,1486,957],{"class":442},[418,1488,1410],{"class":442},[418,1490,1431],{"class":492},[418,1492,1415],{"class":442},[193,1494,1495,1496,1499],{},"読者がログインしている",[177,1497,1498],{},"すべての","ページでトークンを渡してください。トークンのないページは読者がログアウトしたことをウィジェットに伝え、ウィジェットもコメントからログアウトさせます。ページを移動するたびにログインし直すわけではありません。ウィジェットはセッションを保持し、読者が変わったときだけ新しいトークンと交換します。",[193,1501,1502],{},"シングルページアプリでは、ログイン状態の変化に合わせて属性を設定・削除し、ウィジェットのイベントを受け取ります。",[408,1504,1506],{"className":410,"code":1505,"language":413,"meta":414,"style":414},"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",[185,1507,1508,1535,1539,1544,1573,1577,1582,1601,1605,1610,1641,1666,1673,1677,1682],{"__ignoreMap":414},[418,1509,1510,1512,1515,1517,1520,1522,1525,1527,1529,1531,1533],{"class":420,"line":421},[418,1511,464],{"class":463},[418,1513,1514],{"class":435}," widget ",[418,1516,470],{"class":442},[418,1518,1519],{"class":435}," document",[418,1521,476],{"class":442},[418,1523,1524],{"class":479},"querySelector",[418,1526,832],{"class":435},[418,1528,575],{"class":442},[418,1530,1431],{"class":446},[418,1532,575],{"class":442},[418,1534,608],{"class":435},[418,1536,1537],{"class":420,"line":428},[418,1538,457],{"emptyLinePlaceholder":456},[418,1540,1541],{"class":420,"line":453},[418,1542,1543],{"class":424},"\u002F\u002F after your site signs the reader in\n",[418,1545,1546,1549,1551,1554,1556,1558,1560,1562,1564,1567,1570],{"class":420,"line":460},[418,1547,1548],{"class":435},"widget",[418,1550,476],{"class":442},[418,1552,1553],{"class":479},"setAttribute",[418,1555,832],{"class":435},[418,1557,575],{"class":442},[418,1559,187],{"class":446},[418,1561,575],{"class":442},[418,1563,510],{"class":442},[418,1565,1566],{"class":431}," await",[418,1568,1569],{"class":479}," fetchCrowmentToken",[418,1571,1572],{"class":435},"())\n",[418,1574,1575],{"class":420,"line":486},[418,1576,457],{"emptyLinePlaceholder":456},[418,1578,1579],{"class":420,"line":543},[418,1580,1581],{"class":424},"\u002F\u002F after your site signs the reader out\n",[418,1583,1584,1586,1588,1591,1593,1595,1597,1599],{"class":420,"line":561},[418,1585,1548],{"class":435},[418,1587,476],{"class":442},[418,1589,1590],{"class":479},"removeAttribute",[418,1592,832],{"class":435},[418,1594,575],{"class":442},[418,1596,187],{"class":446},[418,1598,575],{"class":442},[418,1600,608],{"class":435},[418,1602,1603],{"class":420,"line":605},[418,1604,457],{"emptyLinePlaceholder":456},[418,1606,1607],{"class":420,"line":767},[418,1608,1609],{"class":424},"\u002F\u002F the token expired while the page was open: hand over a fresh one\n",[418,1611,1612,1614,1616,1619,1621,1623,1626,1628,1630,1633,1636,1638],{"class":420,"line":782},[418,1613,1548],{"class":435},[418,1615,476],{"class":442},[418,1617,1618],{"class":479},"addEventListener",[418,1620,832],{"class":435},[418,1622,575],{"class":442},[418,1624,1625],{"class":446},"crow:sso-expired",[418,1627,575],{"class":442},[418,1629,510],{"class":442},[418,1631,1632],{"class":463}," async",[418,1634,1635],{"class":442}," ()",[418,1637,753],{"class":463},[418,1639,1640],{"class":442}," {\n",[418,1642,1643,1646,1648,1650,1652,1654,1656,1658,1660,1662,1664],{"class":420,"line":800},[418,1644,1645],{"class":435},"  widget",[418,1647,476],{"class":442},[418,1649,1553],{"class":479},[418,1651,832],{"class":492},[418,1653,575],{"class":442},[418,1655,187],{"class":446},[418,1657,575],{"class":442},[418,1659,510],{"class":442},[418,1661,1566],{"class":431},[418,1663,1569],{"class":479},[418,1665,1572],{"class":492},[418,1667,1668,1671],{"class":420,"line":823},[418,1669,1670],{"class":442},"}",[418,1672,608],{"class":435},[418,1674,1675],{"class":420,"line":1026},[418,1676,457],{"emptyLinePlaceholder":456},[418,1678,1679],{"class":420,"line":1042},[418,1680,1681],{"class":424},"\u002F\u002F Required mode without a sign-in page: show your own login\n",[418,1683,1684,1686,1688,1690,1692,1694,1697,1699,1701,1703,1705,1708],{"class":420,"line":1073},[418,1685,1548],{"class":435},[418,1687,476],{"class":442},[418,1689,1618],{"class":479},[418,1691,832],{"class":435},[418,1693,575],{"class":442},[418,1695,1696],{"class":446},"crow:login-required",[418,1698,575],{"class":442},[418,1700,510],{"class":442},[418,1702,1635],{"class":442},[418,1704,753],{"class":463},[418,1706,1707],{"class":479}," openLoginDialog",[418,1709,1572],{"class":435},[229,1711,1712,1717],{},[173,1713,1714,1716],{},[185,1715,1625],{},"：ウィジェットが読者をログインさせようとしたものの、トークンの有効期限が切れていました。新しいトークンを設定してください。",[173,1718,1719,1721],{},[185,1720,1696],{},"：Required モードでログインページが設定されておらず、読者がログインボタンを押しました。",[193,1723,1724],{},"あなたのサイト経由でログインした読者は、あなたのサイトでログアウトします。ログアウトページがない場合、次のページでトークンを渡さなければいずれにせよログアウトされるため、ウィジェットは自身のログアウトボタンを表示しません。",[166,1726,1728],{"id":1727},"_4-アカウントの連携","4. アカウントの連携",[193,1730,1731],{},"すでに Crowment アカウントを持っている読者は、コメント欄でアバターの横にあるリンクアイコンからアカウントを連携できます。ポップアップで Crowment にログインし、Crowment のページで確認します。以降、あなたのサイトはその読者を Crowment アカウントでログインさせ、サイトのアカウントで書いたコメントはそのアカウントに移ります。",[193,1733,1734,1735,1738,1739,1742,1743,1746],{},"連携により、あなたのサイトは",[177,1736,1737],{},"あなた自身のページ上でのみ","、その読者を Crowment アカウントでログインさせられるようになります。確認ページでもそのことが読者に伝えられます。読者は User Console の ",[177,1740,1741],{},"Profile → Linked sites"," からいつでも連携を解除でき、コメントは読者のもとに残ります。SSO 設定の ",[177,1744,1745],{},"Account linking"," で連携をオフにすることもできます。",[193,1748,1749],{},"トークンの名前とアバターは、ログインのたびに読者のコメント用プロフィールを更新します。連携した Crowment アカウントは、自分の名前とアバターを保ちます。",[166,1751,1752],{"id":1752},"セキュリティ",[229,1754,1755,1758,1765],{},[173,1756,1757],{},"シークレットはサーバーに保管してください。シークレットを持つ人は、あなたのサイトで誰にでもなりすまして読者をログインさせられます。",[173,1759,1760,1761,1764],{},"漏えいした場合は ",[177,1762,1763],{},"Replace secret"," を選択します。古いシークレットで署名されたトークンはすぐに使えなくなるため、新しいシークレットを直ちにデプロイしてください。すでにコメントにログインしている読者は、ログインしたままです。",[173,1766,1767],{},"トークンは現在のリクエストの読者に対してだけ署名し、有効期間は短くしてください。",[166,1769,1770],{"id":1770},"トラブルシューティング",[279,1772,1773,1783],{},[282,1774,1775],{},[285,1776,1777,1780],{},[288,1778,1779],{},"症状",[288,1781,1782],{},"考えられる原因",[298,1784,1785,1804,1817,1825],{},[285,1786,1787,1792],{},[303,1788,1789],{},[185,1790,1791],{},"invalid_sso_token",[303,1793,1794,1795,1797,1798,1800,1801,1803],{},"シークレットが間違っている、または置き換え済み、",[185,1796,376],{}," がアプリキーと異なる、HS256 以外のアルゴリズム、",[185,1799,307],{}," を数値で送信、",[185,1802,324],{}," が空、有効期間が 1 時間を超えている。",[285,1805,1806,1811],{},[303,1807,1808],{},[185,1809,1810],{},"sso_token_expired",[303,1812,1813,1814,1816],{},"トークンの ",[185,1815,392],{}," を過ぎている、またはサーバーの時計がずれている。ページ表示ごとに新しいトークンに署名してください。",[285,1818,1819,1822],{},[303,1820,1821],{},"SSO is not enabled for this app",[303,1823,1824],{},"モードが Off になっている、またはシークレットが作成されていない。",[285,1826,1827,1830],{},[303,1828,1829],{},"Request origin does not match",[303,1831,1832],{},"ページがウィジェットのドメインまたはそのサブドメイン上にない。",[1834,1835,1836],"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":414,"searchDepth":428,"depth":453,"links":1838},[1839,1840,1845,1846,1847,1848,1849],{"id":168,"depth":428,"text":168},{"id":198,"depth":428,"text":199,"children":1841},[1842,1843,1844],{"id":213,"depth":453,"text":213},{"id":227,"depth":453,"text":227},{"id":251,"depth":453,"text":252},{"id":269,"depth":428,"text":270},{"id":1373,"depth":428,"text":1374},{"id":1727,"depth":428,"text":1728},{"id":1752,"depth":428,"text":1752},{"id":1770,"depth":428,"text":1770},"あなたのサイトにログインしている読者は、コメントにもログインした状態になります。2 つ目のアカウントも、2 回目のログインも不要です。","md",{},{"title":93,"description":1850},"22sECa7zvmysG1iHCCH-9b655nonqABnG3thTns7wzI",[1856,1858],{"title":83,"path":84,"stem":85,"description":1857,"children":-1},"翻訳者やサポーター、VIPを名前の横に表示します。手動でも、シングルサインオン経由でも付与できます。",{"title":97,"path":103,"stem":104,"description":1859,"children":-1},"プランで制限されるもの、アップグレード・ダウングレード・解約の方法、支払いに失敗したり上限を超えたりした場合の扱いについて。",1792581791265]