# 사용법

인증 위젯 JavaScript SDK의 사용법에 대해서 알아보겠습니다.

## 📘 설치하기

클라이언트 측 HTML 파일의 `<body>` 태그 내에 아래의 스크립트를 추가합니다.

```html

<script src="https://assets.daopass.info/auth/widget.js"></script>

```

## 📘 인증 위젯 출력

인증 위젯을 출력시키는 방법을알아보겠습니다.

먼저 설정하신 인증 위젯 상세 페이지에서 API 키를 확인해주세요.

그리고 아래의 스크립트 예시를 참고하여 인증위젯을 초기화시켜주세요.

초기화가 진행되면 기기별 인증 위젯 화면이 출력됩니다.

```javascript

AuthWidget.init({
    apiKey: "api_e73ad1019060bd340358", // (required) 인증위젯API 키
    requestId: "afg3ad101asdzhlkq0", // (option) 클라이언트 서버에서 요청 유저를 확인하기 위한 고유 키
    successEventName: "SUCCESS_EVENT", // (option) 인증 성공 시 실행할  post message
    failEventName: "FAIL_EVENT" // (option) 인증 실패 시 실행할 post 이벤트 
});

```

{% hint style="success" %}
API Key는 인증 위젯 추가 시 자동으로 생성됩니다.

[준비](/daopass-doc/auth-widget/get-started.md#undefined-2)
{% endhint %}

### PC

인증용  QR코드가 출력되고 사용자가 다오패스 APP으로 스캔 시 인증이 진행됩니다.

<figure><img src="/files/11hJ3z9PF517XYJusnhf" alt=""><figcaption><p>PC화면 인증위젯</p></figcaption></figure>

### MOBILE

`다오패스 APP 내 웹페이지` 혹은 `모바일 브라우저`에서는 `인증하기 버튼`이 출력되고 사용자가 해당 버튼 클릭 시 인증이 진행됩니다.

<div align="left"><figure><img src="/files/UEqfAJxbedqOVvFJlZuk" alt=""><figcaption><p>모바일화면 인증위젯</p></figcaption></figure></div>

## 📘 인증 결과 처리

### 인증 결과 Callback

사용자가 진행한 인증 결과는 인증위젯 설정에 추가하신 `Callback URL`로 전송됩니다.

전송되는 데이터의 정보는 다음과 같습니다.

<table><thead><tr><th>이름</th><th width="242.33333333333331">타입</th><th>설명</th></tr></thead><tbody><tr><td>clientId</td><td>String</td><td>인증 키(인증내역 고유 ID)</td></tr><tr><td>status</td><td>String</td><td>인증 결과<br> - 성공: success<br> - 실패: fail</td></tr><tr><td>message</td><td>String</td><td>인증 결과 메시지</td></tr><tr><td>address</td><td>String</td><td>인증 요청 지갑주소</td></tr><tr><td>nft</td><td>Object</td><td>인증에 사용된 NFT 정보<br> - chainId: 블록체인 네트워크 ID<br> - contract: 컨트랙트 주소<br> - tokenId: NFT ID</td></tr><tr><td>userData</td><td>Object</td><td>클라이언트 측에서 설정한 커스텀데이터</td></tr></tbody></table>

{% code title="인증 성공 시 응답" %}

```json
{
    "clientId": "ce8b7a7e5c845a",
    "status": "success",
    "message": "인증이 완료되었습니다.",
    "address": "0xf5e9c6355291b421632a66dbfb5b7186df05ccfc",
    "nickname": "홍길동",
    "nft": {
        "chainId": 137,
        "contract": "0xda398051c4cd9efb19e50f710225d74397d508f3",
        "tokenId": "5"
    },
    "userData": {
        "customKey": "6fbb74d2fcd981d52f08"
    }
}
```

{% endcode %}

{% code title="인증 실패 시 응답" %}

```json
{
    "clientId": "ce8b7a7e5c845a,
    "status": "fail",
    "message": "인증에 필요한 NFT를 보유하고 있지 않습니다.",
    "address": "0xf5e9c6355291b421632a66dbfb5b7186df05ccfc"
}
```

{% endcode %}

### Callback 응답

클라이언트 서버에서는 해당 URL이 호출되었을 때 응답 JSON 데이터를 통해 사용자에게 최종적으로 인증 결과를 전달할 수 있습니다.

<table><thead><tr><th>이름</th><th>타입</th><th>설명</th><th><select><option value="e57d3ebcb3654833a641a42142f229ed" label="필수" color="blue"></option><option value="737934640a364194a22c8b601a01f0f3" label="옵션" color="blue"></option></select></th></tr></thead><tbody><tr><td>code</td><td>Integer</td><td>상태 코드<br> - 정상: 100<br> - 그 외(ex: 500)</td><td><span data-option="e57d3ebcb3654833a641a42142f229ed">필수</span></td></tr><tr><td>message</td><td>String</td><td>결과 메시지</td><td><span data-option="e57d3ebcb3654833a641a42142f229ed">필수</span></td></tr><tr><td>secret_key</td><td>String</td><td>인증위젯 설정정보에 배정된 비밀 키</td><td><span data-option="e57d3ebcb3654833a641a42142f229ed">필수</span></td></tr><tr><td>custom_data</td><td>Object</td><td>사용자 화면에 인증 데이터와 함께 전달할 추가 데이터</td><td><span data-option="737934640a364194a22c8b601a01f0f3">옵션</span></td></tr></tbody></table>

{% code title="인증 성공 처리 데이터 예시" %}

```json
{
    "code": 100,
    "message": "OK",
    "secret_key": "secret_ab4315cd157b6100bbda",
    "custom_data": {
        "redirect_url": "https://partner.daopass.net/api/login"
    }
}
```

{% endcode %}

{% code title="인증 실패 처리 데이터 예시" %}

```json
{
    "code": 500,
    "message": "NFT에 해당하는 유저 정보가 존재하지 않습니다.",
    "secret_key": "secret_ab4315cd157b6100bbda"
}
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://metastar.gitbook.io/daopass-doc/auth-widget/using.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
