FastComments.com

사용자 지정 및 구성

컨텍스트

여기에서는 댓글 위젯이 지원하는 각 기능 및 설정에 대한 심층 문서를 찾을 수 있습니다.

이 문서에서는 핵심 개념을 다루고, 사용 방법과 각 기능 영역별로 알아야 할 주의사항까지 깊이 있게 설명합니다.

관련 줄이 강조된 코드 예제가 제공됩니다. 해당되는 경우 구성 페이지의 스크린샷도 제공됩니다.

코드 예제는 당사의 바닐라 JavaScript 라이브러리를 사용하지만, 구성 옵션은 모든 댓글 위젯 버전(React, Vue 등)에서 정확히 동일한 이름을 사용합니다.

이 가이드에 설명된 대부분의 구성 및 기능은 코드를 작성할 필요가 없습니다.

다른 페이지에서 동일한 댓글 렌더링 Internal Link


urlId 매개변수는 댓글이 연결될 페이지(또는 ID)를 정의할 수 있게 해주므로, 해당 페이지들에서 urlId를 같은 값으로 설정하면 됩니다.

The Same Comments on Multiple Pages
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "urlId": "https://example.com/source-page"
8}];
9</script>
10

맞춤 글꼴 Internal Link

FastComments는 사용자 맞춤형으로 설계되었으며, 위젯에서 사용하는 글꼴도 예외는 아닙니다.

기본적으로 FastComments는 가능한 한 다양한 기기에서 보기 좋게 표시되도록 system font stack을 사용합니다.

자신의 글꼴을 정의하려면 맞춤 CSS 문서를 참조하세요.

해당 문서에서는 원하는 글꼴을 지정할 수 있는 맞춤 CSS 정의 방법을 확인할 수 있습니다.

글꼴을 정의하는 방법

글꼴을 재정의하려면 .fast-comments, textarea 선택자를 사용하여 CSS를 정의하는 것을 권장합니다. 예:

커스텀 외부 폰트 예제
Copy CopyRun External Link
1
2@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap');
3.fast-comments, textarea {
4 font-family: 'Roboto', sans-serif;
5}
6

어두운 배경(다크 모드) 지원 Internal Link

기본적으로 FastComments 댓글 위젯은 대부분의 사이트에서 다크 모드를 자동으로 감지합니다.

다크 모드가 감지되면 FastComments는 흰 배경의 검은색 텍스트에서 검은 배경의 흰색 텍스트로 전환합니다. 이미지도 변경됩니다.

페이지 로드 시, 위젯은 댓글 위젯 뒤에 있는 페이지 배경이 얼마나 어두운지를 판단하려고 시도합니다. 이는 페이지가 흰 배경일 수 있지만, 댓글 위젯을 검은색 배경의 컨테이너 안에 넣으면 댓글을 읽기 쉽게 하기 위해 다크 모드가 여전히 자동으로 활성화되어야 함을 의미합니다.

그러나 "휘도(luminance)"를 결정하는 방식에 의존하는 감지 메커니즘은 원할 때 다크 모드를 활성화하지 않을 수 있습니다. 강제로 활성화하려면 hasDarkBackground 플래그를 다음과 같이 true로 설정하십시오:

Force Dark Background Mode
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "hasDarkBackground": true
8}];
9</script>
10

댓글에서 페이지로 링크 연결 Internal Link

알림 이메일을 보내거나, 모더레이션 페이지와 같은 사용자 인터페이스에 댓글을 렌더링할 때, 댓글에서 해당 댓글이 달린 페이지로 링크를 걸 수 있으면 유용합니다.

If URL ID isn't always an ID, then we have to store the URL some place else. That's what the "url" property is for, defined as follows.

Defining a Custom URL
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "url": "https://example.com/article-5"
8}];
9</script>
10

일반적인 사용 사례는 댓글 스레드를 기사와 같은 식별자에 연결한 다음, 특정 페이지로 다시 링크하는 것입니다. 예를 들어:

Defining Custom URL and URL IDs together
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "url": "https://example.com/article-5",
8 "urlId": "article-5"
9}];
10</script>
11

URL은 일반적인 마케팅 파라미터가 제거되지 않습니다. 기본적으로 현재 페이지의 URL이 무엇이든, 그 URL이 댓글과 함께 저장됩니다.

렌더링할 페이지 결정 Internal Link

댓글을 가져오고 렌더링할 때, 댓글 위젯은 어느 페이지에서 시작할지 알아야 합니다. 기본적으로는 시작 페이지로 첫 번째 페이지만 렌더링합니다.

원한다면, 렌더링할 정확한 페이지를 설정 startingPage로 댓글 위젯에 전달할 수 있습니다.

Specifying The Page to Render
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "startingPage": 1
8}];
9</script>
10

페이지 번호는 0부터 시작한다는 점에 유의하세요. 따라서 위의 예제는 두 번째 페이지를 렌더링합니다.

페이지를 새로고침하지 않고 댓글 스레드 전환 Internal Link

우리는 urlId가 댓글이 연결되는 페이지 또는 게시물의 ID라는 것을 다뤘습니다.

또한 요약하면, 정의되지 않으면 urlId는 현재 페이지 URL로 기본값이 설정됩니다.

페이지나 콘텐츠가 전체 페이지 리로드 없이 동적으로 변경되는 SPA(싱글 페이지 애플리케이션)의 경우는 어떨까요?

Angular, React, Vue 등

Angular 및 React와 같은 라이브러리를 사용하는 경우, 위젯에 전달되는 urlId 속성을 단순히 업데이트하면 댓글 위젯이 새로고침됩니다. 예를 들어 React 앱에서 동작하는 모습을 여기에서 확인할 수 있습니다.

VanillaJS

VanillaJS 라이브러리를 사용하고 있다면, 데이터 바인딩이나 상태 전파를 처리해 주는 Angular나 React 같은 프레임워크가 없기 때문에 약간 더 복잡합니다.

VanillaJS 위젯을 인스턴스화하면, 이를 업데이트할 수 있는 몇 가지 함수들이 반환됩니다.

다음은 페이지 해시를 변경하고 댓글 위젯을 업데이트하는 작동 예제입니다:

페이지 해시 전환 예제
Copy CopyRun External Link
1
2<script src="https://cdn.fastcomments.com/js/embed-v2.min.js"></script>
3<button id="change-page"></button>
4<div id="fastcomments-widget"></div>
5<script>
6 (function fastCommentsMain() {
7 let config = {
8 tenantId: 'demo'
9 };
10 let instance = window.FastCommentsUI(document.getElementById('fastcomments-widget'), config);
11
12 let page = '#page-1';
13 function getNextPage() {
14 if (page === '#page-1') {
15 return '#page-2';
16 } else {
17 return '#page-1';
18 }
19 }
20
21 let button = document.getElementById('change-page');
22 function nextPage() {
23 page = getNextPage();
24 button.innerText = 'Go to ' + getNextPage();
25 window.location.hash = page;
26 let locationString = window.location.toString();
27
28 config.url = locationString; // We update url, too, so notifications can link back to the right page
29 config.urlId = locationString;
30
31 instance.update(config);
32 }
33 nextPage();
34 button.addEventListener('click', nextPage);
35 })();
36</script>
37

이미지 리다이렉트 비활성화 Internal Link


기본적으로 FastComments는 사용자가 이미지를 업로드할 수 있도록 허용합니다. 사용자가 그 이미지를 클릭하면, FastComments는 기본적으로, 새 탭을 열어 해당 이미지를 전체 보기로 표시합니다. 이 플래그를 true로 설정하면 이 동작이 비활성화됩니다:

Disable Image Redirect
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "disableImageRedirect": true
8}];
9</script>
10

이미지 클릭을 직접 캡처할 계획이 없다면 (참조: onImageClicked), 이 동작을 일부 스타일과 결합하는 것을 권장합니다 이미지가 클릭 가능한 것처럼 보이는 외관을 제거하기 위해.


새 댓글 강조 표시 Internal Link

FastComments는 새 댓글을 강조 표시하는 여러 방법을 제공합니다.

First and foremost, by default comments that triggered an in-app notification (replies, replies in same thread, or comments on a page that you're subscribed to), will automatically be highlighted with the user's avatar glowing slightly. 색상은 CSS를 사용하여 is-unread 클래스로 사용자화할 수 있습니다.

최근 24시간 내에 작성된 댓글에는 스타일링에 사용할 수 있는 24hr 클래스가 적용됩니다.

마지막으로, 사용자 세션에 새로 나타나는 실시간 댓글은 애니메이션을 통해 몇 초 동안 강조 표시됩니다. 이는 is-live CSS 클래스로 이루어지며 역시 사용자화할 수 있습니다.

이메일 템플릿 Internal Link

FastComments에서 고객에게 보내는 이메일은 맞춤 설정할 수 있습니다. 템플릿, 로직 및 번역을 모두 변경할 수 있습니다. 텍스트는 로케일별로 맞춤 설정할 수 있으며, 스타일은 도메인별로 변경할 수도 있습니다. 맞춤 이메일 템플릿에 대해 자세히 알아보려면 여기를 확인하세요.

새 실시간 댓글을 하단에 표시 Internal Link

기본적으로 새 라이브 댓글은 실시간으로 게시될 때 댓글 목록의 맨 위에 나타납니다.

이 옵션을 활성화하면 새 라이브 댓글이 대신 목록의 맨 아래에 추가됩니다. 이는 사용자가 댓글 스레드를 보는 동안 댓글이 실시간으로 게시될 때 댓글이 나타나는 방식에 영향을 줍니다.

New Live Comments to Bottom
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "newCommentsToBottom": true
8}];
9</script>
10

이 설정을 활성화하면:

  • 다른 사용자가 게시한 새 라이브 댓글이 댓글 목록의 하단에 나타납니다
  • 사용자는 새 댓글이 기존 댓글 아래에 실시간으로 나타나는 것을 보게 됩니다
  • 이것은 라이브 댓글 업데이트에만 영향을 미치며 초기 페이지 로드에는 영향을 주지 않습니다
  • 사용자가 토론을 따라갈 때 읽기 흐름을 유지하는 데 도움이 될 수 있습니다

이 설정은 새 라이브 댓글이 실시간으로 도착할 때 배치되는 위치에만 영향을 미친다는 점에 유의하세요. 페이지 로드 시의 초기 정렬 순서에는 영향을 주지 않습니다.

무한 스크롤 활성화 Internal Link

기본적으로 FastComments 위젯은 모든 보이는 댓글이 보이도록 세로 크기를 자동으로 조정합니다. 페이지 매김은 현재 페이지 끝에 있는 "다음 보기" 버튼으로 이루어지며, 이는 대부분의 사용자에게 가장 쾌적한 상호작용이라고 판단했습니다.

그러나 무한 스크롤이 더 선호되는 경우도 있습니다. 예를 들어, 당사 Stream Chat 제품에서 이 기능을 사용합니다.

"다음 보기" 버튼을 숨기고 enableInfiniteScrolling 플래그를 true로 설정하여 무한 스크롤로 전환할 수 있습니다:

Enabling Infinite Scrolling
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "enableInfiniteScrolling": true
8}];
9</script>
10

또한 이를 위해 사용자 지정 CSS를 추가해야 합니다. 예를 들어 스크롤을 활성화하려면 .comments 선택자에 대한 사용자 지정 CSS를 추가하세요:

무한 스크롤 활성화
Copy CopyRun External Link
1
2.comments {
3 max-height: 500px;
4 overflow-y: auto;
5}
6

전체 작동 예시는 다음과 같습니다:

Enabling Infinite Scrolling
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "enableInfiniteScrolling": true,
8 "customCSS": ".comments { max-height: 500px; overflow-y: auto; }"
9}];
10</script>
11

위 예제에서는 customCSS 속성을 사용했지만, 성능상의 이유로 위젯 구성 UI를 대신 사용하는 것이 권장됩니다. 사용자 지정 CSS 문서 참조.

모든 댓글을 한 번에 렌더링하기(페이지 매김 비활성화) Internal Link

페이지네이션을 비활성화하고, 모든 댓글을 한 번에 렌더링하려면 startingPage를 -1로 설정하세요.

Render All Comments
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "startingPage": -1
8}];
9</script>
10

새 최상위 댓글 금지 Internal Link

Setting noNewRootComments to true will cause the widget to hide the root reply area, but still allow users to reply 하위 댓글에 답글을 달 수 있게 합니다. 예를 들어, 페이지 로드 시 조건부로 이 값을 설정하여 일부 사용자만 최상위 댓글을 남길 수 있도록 할 수 있습니다.

최상위 댓글 작성 방지
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "noNewRootComments": true
8}];
9</script>
10

최대 답글 깊이 Internal Link

기본적으로 FastComments는 답글의 중첩을 무제한으로 허용하여 사용자가 답글에 계속해서 답글을 달 수 있는 스레드 구조를 만듭니다.

maxReplyDepth 옵션은 답글 스레드가 얼마나 깊게 중첩될 수 있는지를 제한할 수 있게 해줍니다. 최대 깊이에 도달하면 해당 수준의 댓글에는 더 이상 답글 버튼이 표시되지 않습니다.

Limiting Reply Depth to 2 Levels
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "maxReplyDepth": 2
8}];
9</script>
10

With maxReplyDepth set to 2:

  • 사용자는 최상위 수준(깊이 0)에 댓글을 달 수 있습니다
  • 사용자는 최상위 댓글에 답글을 달 수 있습니다 (깊이 1)
  • 사용자는 그 답글들에 다시 답글을 달 수 있습니다 (깊이 2)
  • 깊이 2를 넘어서 추가 답글은 허용되지 않습니다

Setting to 1 would only allow replies to top-level comments, creating a flatter discussion structure.

maxReplyDepth를 0으로 설정하면 모든 답글이 비활성화되어 최상위 댓글만 허용됩니다. 지정하지 않으면 답글은 무제한으로 중첩될 수 있습니다.

싱글 사인온(SSO) 개요 Internal Link

SSO, 또는 싱글 사인온은 FastComments를 사용하기 위해 별도의 계정을 만들지 않고도 사용자나 귀하가 FastComments를 사용할 수 있게 해주는 규약 집합입니다.

익명 댓글을 허용하지 않는다고 가정하면, FastComments에서 댓글을 달기 위해서는 계정이 필요합니다. 우리는 이 가입 과정을 매우 간단하게 만듭니다 — 사용자는 댓글을 남길 때 이메일만 입력하면 됩니다. 그렇지만 일부 사이트는 그조차도 추가적인 마찰이라고 느낄 수 있다는 것을 이해하고 있습니다.

전체 사이트에 대해 하나의 로그인 흐름만 가지도록 하여 그 마찰을 줄일 수 있습니다.

How do I get it?

모든 계정 유형은 현재 SSO에 접근할 수 있습니다. 다만 SSO 사용자 수의 최대치는 패키지에 따라 달라집니다. 다른 기능들과 마찬가지로 Pro 플랜 이상은 직접적인 개발 지원을 제공합니다.

옵션들을 비교한 후 각 항목의 세부 사항으로 들어갑니다.

User and Comment Migrations

Disqus와 같은 SSO를 제공하는 플랫폼에서 마이그레이션하는 경우, 이미 사용자와 그들의 댓글이 있을 것입니다.

댓글은 API, 우리의 Import UI, 또는 고객 지원을 통해 마이그레이션의 일부로 가져옵니다. 이전 플랫폼을 지원하는 경우 Import UI를 사용하는 것이 권장되며, 이는 오류 처리, 아바타 및 미디어 추출 및 업로드, 그리고 배치 작업 모니터링 시스템을 포함합니다.

사용자 계정 자체는 댓글 스레드를 처음 볼 때 자동으로 추가됩니다. 또는 API를 통해 사전 추가할 수도 있지만, 이 작업은 큰 이점이 많지 않습니다.

댓글이 가져와졌고 SSO 사용자가 API로 수동 추가되지 않았다면, 댓글은 사용자가 어떤 댓글 스레드를 처음 볼 때 해당 사용자의 계정으로 자동으로 마이그레이션됩니다. 그러면 그들은 원래 작성한 댓글을 관리, 편집 및 삭제할 수 있게 됩니다.

자동 마이그레이션은 이메일이나 사용자 이름을 통해 수행됩니다. 일부 플랫폼은 Disqus처럼 내보내기 시 이메일을 제공하지 않으므로 이 경우 사용자 이름으로 대체합니다.

  • 일치하는 사용자 이름과 SSO 페이로드에 이메일을 전달하는 한, 알림 및 멘션이 작동하도록 개별 댓글 객체에 이메일을 추가합니다.

댓글과 사용자를 한 번에 가져오고 싶다면, 사용자가 API를 통해 가져온 후 고객 지원과 협력하여 댓글을 해당 사용자 계정으로 마이그레이션하세요.

요약하자면 마이그레이션을 위한 가장 쉬운 경로는 다음과 같습니다:

  1. 댓글을 가져옵니다.
    1. 아바타 및 기타 미디어는 Manage Data -> Imports의 Import UI를 사용하는 경우 자동으로 마이그레이션됩니다.
  2. Secure 또는 Simple SSO를 설정합니다.
  3. 사용자가 처음 로그인할 때 사용자별로 자동 마이그레이션이 이루어지게 둡니다.
    1. 사용자의 댓글 수가 50k 미만인 경우 보통 페이지 로드 시간에 1초 미만만 추가됩니다.

WordPress Users

귀하가 우리 WordPress 플러그인을 사용하고 있다면 작성할 코드는 없습니다! 플러그인의 관리자 페이지로 이동하여 SSO 설정을 클릭한 다음 활성화하면 됩니다.

그러면 API 키를 생성하고 이를 귀하의 WordPress 설치로 전송하며 SSO를 켜는 단일 버튼 클릭 마법사로 이동합니다. 이를 단일 버튼 클릭으로 통합해 두었습니다.

플러그인을 처음 설치하는 경우 관리자 페이지의 SSO 설정 버튼을 보기 전에 설정 과정을 완료해야 한다는 점을 유의하세요.

WordPress SSO - Moderators

현재 FastComments WordPress 플러그인으로 댓글을 달 때 모더레이터 옆에 "Moderator" 배지가 표시되려면, 해당 사용자들은 FastComments 대시보드에서 Moderator로도 추가되어 있어야 하며 이메일이 확인되어야 합니다.

Custom Integrations

커스텀 통합의 경우 두 가지 옵션이 있습니다.

Option One - Secure SSO

Secure SSO를 사용하면 FastComments는 댓글을 작성하고 투표하며 댓글을 읽는 사용자가 귀하의 사이트의 실제 사용자임을 알 수 있습니다.

유효한 페이로드만 생성하면, 사용자는 항상 원활한 댓글 작성 경험을 갖게 됩니다.

Secure SSO에서는 SSO 페이로드가 HMAC 인증을 사용하여 서버 측에서 생성된 다음 클라이언트의 위젯에 전달됩니다.

Secure SSO에서는 사용자의 계정이 FastComments 사용자 기반의 나머지와 완전히 분리됩니다. 즉, 파트너 A와 파트너 B가 있을 때 각 파트너는 모두 사용자 이름이 "Bob"인 SSO 사용자를 가질 수 있습니다.

Requirements

  • 백엔드 개발에 대한 기본 지식.
  • 비밀 API 키를 다루는 기본 지식.
  • API 개발 또는 서버 측 렌더링에 대한 기본 지식.

Pros

  • 안전함.
  • 원활한 댓글 작성 경험.

Cons

  • 백엔드 개발이 필요함.

Updating User Data

Secure SSO를 사용하면 SSO 사용자 페이로드를 전달할 때마다 최신 정보로 사용자를 업데이트합니다. 예를 들어, 사용자의 사용자 이름이 X였고 SSO 페이로드에 Y를 전달하면 그들의 사용자 이름은 Y가 됩니다.

이 방법으로 값을 제거하려면 값을 null로 설정하세요 (undefined가 아님).

Secure SSO API

SSO 사용자와 상호작용하기 위한 API도 제공합니다. the docs를 참조하세요.

Secure SSO를 사용할 때 사용자는 페이지 로드 시 백그라운드에서 자동으로 생성된다는 점에 유의하세요. 사용자를 대량으로 가져올 필요가 없습니다.

Option Two - Simple SSO

Secure SSO의 대안은 단순히 사용자 정보를 댓글 위젯에 전달하는 Simple SSO입니다.

Simple SSO에서는 이메일을 제공할 필요가 없지만, 이메일이 없으면 그들의 댓글은 "Unverified"로 표시됩니다.

참고! 2022년 초부터 Simple SSO의 사용자 이름은 FastComments.com 전체에서 고유할 필요가 없습니다.

이상적으로 Simple SSO는 백엔드 접근을 제공하지 않는 플랫폼에서 개발할 때만 선택해야 합니다.

Requirements

  • 클라이언트 측 개발에 대한 기본 지식.
  • 적어도 사용자 이메일을 알고 있어야 함.

Pros

  • 단순함.
  • 모든 활동은 여전히 검증됨.
  • 사용자는 자신들의 사용자 이름이나 이메일을 입력하지 않음.

Cons

  • 클라이언트 측 페이로드가 임의로 조작되어 어떤 사용자로도 될 수 있기 때문에 Secure SSO보다 보안성이 낮음.

Simple SSO API

Simple SSO 흐름을 통해 자동으로 생성된 사용자는 SSOUser 객체로 저장됩니다. 이들은 SSOUser API를 통해 접근하고 관리할 수 있습니다. the docs를 참조하세요.

맞춤 통합 - 단순 싱글 사인온(SSO) Internal Link

Simple SSO를 사용하면 댓글 위젯에 사용자의 정보를 제공하여 사용자가 댓글을 달 때 사용자 이름이나 이메일을 입력할 필요가 없게 할 수 있습니다.

Simple SSO는 다음과 같이 구성할 수 있습니다:

Simple SSO
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "simpleSSO": {
8 "username": "Bob",
9 "email": "bob@example.com",
10 "avatar": "https://example.com/bob.png",
11 "websiteUrl": "https://example.com/profiles/bob",
12 "displayName": "Bob's Name",
13 "displayLabel": "VIP User",
14 "loginURL": "https://example.com/login",
15 "logoutURL": "https://example.com/logout",
16 "badgeConfig": {
17 "badgeIds": [
18 "badge-id-1",
19 "badge-id-2"
20 ],
21 "pageBadgeIds": [
22 "badge-id-3"
23 ],
24 "override": false
25 }
26 }
27}];
28</script>
29

사용자는 로그인된 상태가 되며, 내부적으로 SSO 사용자가 생성됩니다. API에서 가져온 경우 사용자의 createdFromSimpleSSOtrue로 설정됩니다.

Notes:

  • 이메일은 Simple SSO의 고유 식별자입니다.
  • Simple SSO에 이메일을 제공하는 것은 필수가 아니지만, 기본적으로 이들의 댓글은 "확인되지 않음"으로 표시됩니다. 이메일이 제공되지 않으면 사용자는 완전히 인증될 수 없습니다.
  • NEW 2022년 1월 이후: 사용자 이름은 fastcomments.com 전체에서 고유할 필요가 없습니다
  • 이메일이 제공되고 사용자가 원래 Secure SSO에서 생성되지 않은 경우 Simple SSO는 SSO 사용자를 자동으로 생성하고 업데이트할 수 있습니다.
  • 사용자에 대한 배지는 badgeConfig 속성으로 지정할 수 있습니다. badgeIds 배열에는 사용자와 연결할 글로벌 배지의 ID들이 포함됩니다. pageBadgeIds 배열에는 현재 페이지(urlId)에 범위가 지정된 배지 ID들이 포함되며 — 이러한 배지는 할당된 페이지에서만 표시됩니다. overridetrue로 설정되면 기존에 표시된 배지들을 대체합니다(글로벌과 페이지 범위 배지는 각각 독립적으로 대체됩니다); false이면 기존 배지에 추가됩니다.

맞춤 통합 - Disqus SSO에서 마이그레이션 Internal Link

Disqus와 FastComments Secure SSO 사이의 가장 큰 차이점은 Disqus는 암호화에 SHA1을 사용하는 반면, 우리는 SHA256을 사용한다는 점입니다.

이는 Disqus에서의 마이그레이션이 쉽다는 것을 의미합니다 - 사용되는 해싱 알고리즘을 SHA1에서 SHA256으로 변경하고 UI에 전달되는 속성 이름들을 업데이트하면 됩니다.

맞춤 통합 - Commento SSO에서 마이그레이션 Internal Link

Commento는 근본적으로 다른 SSO 접근 방식을 사용합니다 - 사용자를 인증하기 위해 호출하는 엔드포인트를 보유하도록 요구합니다.

FastComments는 그와 반대로 작동합니다 - 단순히 비밀 키를 사용해 사용자의 정보를 인코딩하고 해시한 후 전달하면 됩니다.

콜백 Internal Link


댓글 위젯용 모든 라이브러리(현재 Angular, React, Vue)는 콜백을 지원합니다.

콜백은 구성 객체(configuration object)에 지정되며, 각 라이브러리에서 동일한 시그니처를 가집니다.

지원되는 콜백은:

  • onInit
  • onAuthenticationChange
  • onRender
  • commentCountUpdated
  • onReplySuccess
  • onVoteSuccess
  • onImageClicked
  • onOpenProfile
  • onCommentSubmitStart
  • onCommentsRendered

정확한 시그니처는 TypeScript 정의에서 확인할 수 있습니다.

다음은 모든 콜백을 사용한 예제입니다:

콜백 예제
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 window.fcConfigs = [{
6 target: '#fastcomments-widget',
7 tenantId: 'demo',
8 onInit: function () {
9 console.log('Library started to fetch comments!');
10 },
11 onAuthenticationChange: function (eventName, userObj) {
12 console.log('User authenticated!', eventName, userObj);
13 },
14 onRender: function () {
15 console.log('Render event happened!');
16 },
17 commentCountUpdated: function (newCount) {
18 console.log('New comment count:', newCount);
19 },
20 onReplySuccess: function (comment) {
21 console.log('New comment saved!', comment);
22 },
23 onVoteSuccess: function (comment, voteId, direction, status) {
24 console.log('New vote saved!', comment, voteId, direction, status);
25 },
26 onImageClicked: function (src) {
27 console.log('Image clicked!', src);
28 },
29 onOpenProfile: function (userId) {
30 console.log('User tried to open profile', userId);
31 // return true; // 기본 동작(fastcomments.com 사용자 프로필 열기)을 방지하려면 true를 반환하세요.
32 },
33 onCommentSubmitStart: function(comment, continueSubmitFn, cancelFn) {
34 console.log('Trying to submit comment', comment);
35 setTimeout(function() { // 비동기 동작(예: API 호출 등)을 에뮬레이트합니다.
36 if(confirm('Should submit?')) {
37 continueSubmitFn();
38 } else {
39 cancelFn('Some optional error message');
40 }
41 }, 1000);
42 },
43 onCommentsRendered: function(comments) {
44 // comments는 페이지의 기본 정렬에 따라 정렬되며, 이는 Most Relevant(예: 가장 많은 추천을 받은 항목 등) 또는 Newest First(최신순)일 수 있습니다
45 const topCommentInList = comments[0];
46 console.log('First Comment Rendered:', topCommentInList.avatarSrc, topCommentInList.commenterName, topCommentInList.commentHTML);
47 }
48 }];
49</script>
50

페이지 제목 Internal Link


현재 페이지 제목은 지정된 urlId에 연결되어 모더레이션 도구에서 사용하기 위해 저장됩니다.

기본적으로 이는 document.title에서 가져옵니다.

원한다면, 다음과 같이 페이지 제목을 지정할 수 있습니다:

Specifying The Page Title
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "pageTitle": "Article 42"
8}];
9</script>
10

댓글 수 및 모든 중첩 답글 포함 계산 Internal Link

댓글 위젯 상단에 표시되는 댓글 수는 페이지나 게시물 자체에 직접 달린 답글을 의미하는 "top-level" 댓글만을 표시할 수도 있고, 또는 모든 중첩된 댓글의 수를 셀 수도 있습니다.

기본적으로 이것은 true입니다 - 후자의, 즉 모든 댓글의 수를 셉니다. 댓글 위젯의 이전 버전에서는 기본값이 false였습니다.

우리는 동작을 변경하여 모든 중첩 댓글의 수가 되도록 countAll 플래그를 true로 설정할 수 있습니다.

Counting All Comments
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "countAll": true
8}];
9</script>
10

카운트가 오직 최상위 댓글만 반영하도록 하려면, 플래그를 false로 설정합니다.

Counting Top Level Comments
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "countAll": false
8}];
9</script>
10

이 동작은 현재 코드 변경 없이 사용자화할 수 없습니다.

그룹 멘션 ID Internal Link

@mentions 자동 완성에 사용할 id 목록입니다. 교집합 그룹이 없는 사용자에게 태그되는 것을 방지하려는 경우에 유용합니다.

지정하면 @ 문자를 입력한 후 자동 완성에는 다른 그룹에 속한 사용자만 제공됩니다.

Limit Groups for Mentions
Copy CopyRun External Link
1
2<script async src="https://cdn.fastcomments.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5window.fcConfigs = [{
6 "tenantId": "demo",
7 "mentionGroupIds": [
8 "yxZAhjzda",
9 "QT19nXbqB"
10 ]
11}];
12</script>
13