
Језик 🇷🇸 Српски
Instalacija Val Town
Ankete
Dodajte live komentarisanje u Val Town aplikacije
Val Town извршава TypeScript на Deno, тако да је вал прави сервер. То га чини добрим избором за FastComments: виџет је script ознака на страници, а све што захтева тајну, као што су Secure SSO или верификација вебхука, може да се изврши на серверу у истом валу.
Овај водич обухвата додавање виџета за коментаре у HTTP вал, приказ броја коментара на индекс страници, пријављивање корисника помоћу постојећег Val Town налога, и примање вебхукова за коментаре.
Не треба вам налог да бисте пробали. Примери користе tenantId: "demo", заједничку песочницу, а корак 2 објашњава како да пређете на ваш сопствени.
Korak 1: Dodajte widget 
Виџет је script таг и контејнер елемент, тако да се уклапа у било шта ваш val већ приказује. Овај пример користи Hono JSX, који користе Val Town HTTP шаблони.
Run 
Изаберите urlId пре објављивања
urlId одређује у којој нити се коментар налази. Ако га не подесите, подразумевано се користи очишћена верзија URL-а тренутне странице, што је управо оно што се мења на Val Town: val има дугачак *.web.val.run hostname док не заузмете subdomain, гране добијају сопствене URL-ове, а преименовање странице мења путању. Свака варијација тихо постаје посебна, празна нит, а симптом изгледа као „моји коментари су нестали".
Поставите га на нешто стабилно што контролишете, као што је slug објаве или id из базе података, као у примеру изнад. Проследите и url, како би имејл нотификације и алати за модерацију могли да повежу на праву страницу.
Задржавање коментара без JavaScript-а
FastComments приказује комплетну нит на серверу, што val може убацивати у <noscript> блок:
Run 
URL-енкодирајте параметре. Серверска верзија подржава анонимно и пријављено коментарисање, SSO и угнежђене одговоре.
Korak 2: Koristite svoj nalog 
tenantId: "demo" је дељени јавни песак. Ради без регистрације, због чега се примери користе, али сви остали који користе FastComments пишу у истим темама и свако их може модерирати. Промените пре него што објавите било шта што вам је важно.
Ваш tenant ID је на страници за API тајну.
Tenant ID је јаван и треба да буде у коду у прегледачу. API тајна није, и ништа на овој страници не захтева једну.
Прочитајте га из променљиве окружења
Val Town валови су јавни у бесплатном слоју, тако да је њихов извор читљив свима. Чувајте све осетљиво у променљивим окружења, читајте их помоћу Deno.env.get:
Run 
Ово је важније него обично на Val Town из другог разлога: ремиксовање вал‑а копира кључеве променљивих окружења, али не и њихове вредности. Тајна сачувана у променљивој окружења не прати ваш вал у налог друге особе. Тајна уписана у датотеку то чини.
Враћање на "demo" одржава вал у раду за свакога ко га ремиксује пре него што постави сопствени tenant.
EU налози
Налог, његови подаци и кључеви живе у једној региони. Ако је ваш креиран на eu.fastcomments.com, свака конфигурација виџета такође треба region: "eu", а скрипте се учитавају са cdn-eu.fastcomments.com. У супротном оставите оба нетакнута.
Broj komentara na indeksnoj stranici 
На индекс страници, немојте да рендерујете један widget за број коментара по реду. То је један захтев по посту. Користите групни број, који захтева један захтев за целу страницу.
Означите сваки ред urlId‑ом који користи његова тема, а затим учитајте групни widget једном:
Run 
Скрипта проналази сваки елемент .fast-comments-count на страници и попуњава његов број.
data-fast-comments-url-id мора да се поклапа са urlId‑ом који користи widget за коментаре поста. Ако widget користи slug, маркер користи slug. Неусаглашеност приказује нулу на теми која има коментаре.
Скрипта проверава window.FastCommentsBulkCountConfig, па није битно да ли постављате конфигурацију пре или после script таг‑а.
Sigurni SSO sa std/oauth 
Ако ваш val већ зна ко је посетилац, Secure SSO предаје тај идентитет виџету тако да посетилац никада не види другу пријаву. Нема крајњих тачака за изградњу и нема ничега за позивати у току рада: израчунавате три вредности на серверу и прослеђујете их у конфигурацију виџета.
Val Town нуди пријаву без конфигурације преко std/oauth, тако да посетилац може да се пријави Val Town налогом који већ има. Замените то оним што ваша апликација користи; FastComments део се не мења.
Изградите payload на серверу
API тајна потписује payload и никада не сме да доспе до кода у прегледачу. Инсталирајте SDK са npm-а, који ради на Val Town Deno runtime-у какав јесте:
Run 
getPayload() враћа { userDataJSONBase64, verificationHash, timestamp }. Те три вредности су све што доспева до прегледача. Тајна их потписује и затим се одбацује, тако да ништа на страни не омогућава читаоцу да фалсификује другог корисника.
Проследите га виџету
Run 
oauthMiddleware додаје GET /auth/login, GET /auth/callback и POST /auth/logout уместо вас. Имајте у виду да је одјава POST, док виџет одлази на logoutURL са GET, па усмерите logoutURL на малу руту коју сами правите и која шаље тај POST.
Када је посетилац одјављен, проследите sso са само loginURL. Виџет тада приказује позив за пријаву уместо анонимног поља за коментаре.
Ствари које крену наопако
timestamp је у епохи милисекундама, не сме бити у будућности и не сме бити старији од два дана. Генеришите га на серверу у истом захтеву у коме се рачуна хеш. Генерисање у прегледачу је класична грешка: вредност се разликује од оне која је хеширана и сваки коментар бива одбијен.
Никада не постављајте isAdmin или isModerator од добављача идентитета. Пријава Val Town налогом не говори ништа о томе ко би требало да модерира ваш сајт.
Погледајте SSO водич за потпуну листу поља, теме ограничене групама и значке.
Primanje webhook-ova 
A val је природни прималац вебхука: има стабилну URL адресу, може да верификује потпис, и има уграђену SQLite и blob складиште.
FastComments потписује ${timestamp}.${body} тајном вашег налога за API и шаље два заглавља:
Run 
Метод преноси догађај: PUT за креиран или ажуриран коментар, DELETE за обрисан.
Run 
Две ствари које гризу
Провери сирове бајтове. Парсирање JSON-а и поновно серијализовање мења редослед кључева и размаке, па хеш буде различит и свака испорука не успе без очигледног разлога. Ово је уобичајен разлог зашто прималац вебхука "само не ради".
Упореди у константном времену. Обичан === над потписом открива колико бајтова се поклапа, што је довољно за фалсификовање једног бајта појединачно.
Обрада догађаја
Одговори брзо. FastComments поново покушава на не‑2xx одговор, а крајња тачка која стално не успева се на крају аутоматски онемогућава, па изврши прави посао након одговора уместо унутар.
Учини да рад буде идемпотентан по ID-ју коментара. Поновни покушај се поново потписује са свежим временским жигом, а исти ID коментара се поново пошиље приликом измене и брисања, тако да нема стабилног атрибута за дедаупликацију.
Primer Vals 
Четири јавна vals-а које можете ремиксовати, сваки покрива по један део овог водича.
Блог са коментарима (уживо) је Markdown блог са нитима коментара испод сваког поста и укупним бројевима коментара на индексу. Ради чим га ремиксујете, а једна променљива окружења усмерава га на ваш налог.
SSO демо (уживо) пријављује посетиоца преко његовог Val Town налога и предаје тај идентитет виџету, тако да нема друге пријаве.
Пријемник webhook-ова (уживо) верификује HMAC потпис на свакој достави и чува догађаје у SQLite. Има дугме које потписује тестни payload и доставља га самом себи, тако да можете видети успешну верификацију пре него што конфигуришете стварни webhook.
Agent skills (уживо) је библиотека FastComments agent skills-ова који покривају виџет, SSO, REST API, модерацију и миграцију са Disqus-а. Ремиксујте га и Val Town-ов агент, Townie, аутоматски преузима skills-ове из skills/, тако да ваш агент зна како да повеже коментаре без тога да лепите документацију у ћаскање.
Исти skills-ови се инсталирају било где другде са npx skills add fastcomments/skills.
Greške domena 
Када искључите demo tenant, виџет може одбити учитавање са грешком ауторизације. То је зато што FastComments не зна да треба да дозволи ваш налог да се користи на том домену.
Идите овде да додате ваш сајт у ваш налог.
Val Town заслужује поновно разматрање, јер се вал може приступити преко више од једног хост имена:
- Сваки HTTP вал има дуги подразумевани крајњи тачку,
<org>--<id>.web.val.run. - Потраживање прилагођеног поддомена додаје
<name>.val.run. - Прилагођени домен додаје трећи.
- Гране добијају своје URL-ове.
Додајте све хост имене са којих заправо служите виџет. Ако затражите поддомен након што сте подесили све, додајте га такође, иначе ће виџет радити на старом URL-у, а не успевати на новом.
Dodajte ankete u vašu Val Town aplikaciju 
Када је FastComments на вашој Val Town апликацији, можете такође покретати живе анкете директно у коментарима. Укључите Enable Polls у подешавањима прилагођавања вашег виџета и дугме за анкету ће се појавити у траци са алаткама за коментаре. Анкете подржавају 2 до 10 опција, резултати се ажурирају уживо за све на страници, а ви бираете ко може креирати анкете и да ли гласање захтева пријављивање. Ништа друго није потребно инсталирати на Val Town.
Пробајте демо живих анкета или прочитајте документацију о анкетама да их подесите.