> For the complete documentation index, see [llms.txt](https://nsl-solution.gitbook.io/livesolution/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nsl-solution.gitbook.io/livesolution/viewer/sdk-ios/member.md).

# 회원 연동

서드파티 회원정보를 연동하여 뷰어를 제공합니다. 연동하지 않는 경우, 비회원으로 뷰어 이용이 가능하지만 회원정보가 필수적인 일부 기능 사용이 불가합니다.

{% hint style="info" %}
회원 연동 완료 후 외부회원 인증을 위해 esuk(자사몰의 유니크 유저 아이디), esun(닉네임) , esua(연령), esug(성별) 정보를 주입하면 해당 정보로 외부 회원 인증 처리가 진행되며 로그 이력으로 저장됩니다.

해당 정보를 개인정보로 판단하는 파트너사의 경우 개인정보 위수탁 계약 작성이 필요할 수 있습니다.

계약 작성이 필요한 파트너사의 경우 네이버 쇼핑라이브 담당자([dl\_livesolution@navercorp.com](https://contact.navercorp.com/v2/p/popup/groups/200000000013897/view?language=ko_KR#))에게 문의해주세요.
{% endhint %}

{% hint style="warning" %}
회원연동 스펙을 적용하는 경우, 서비스별 설정이 필요합니다.&#x20;

관리툴에 제공되는 솔루션 메뉴 중 자사몰 뷰어 설정 > 회원연동 옵션 영역에서 자사몰 회원 연동 방식을 '연동함'으로 변경해주세요.

![](/files/10xZ8upzexYVed0eWs2G)
{% endhint %}

* 회원기반 유니크 식별이 가능합니다.
* 블랙리스트 등록을 통해, 어뷰징 유저의 채팅 참여를 차단할 수 있습니다.
* 회원정보를 통해 이벤트 참여가 가능합니다.

### 1. 뷰어 호출시 회원정보 주입&#x20;

[뷰어 호출](https://nsl-solution.gitbook.io/livesolution/viewer/sdk-ios/pages/iN2ov55bKGNiTk1FPpEQ#3.)시 `liveEndUrl` 에 쿼리 스트링으로 회원정보를 추가합니다.

<table><thead><tr><th width="118.33333333333331">params</th><th width="109">type</th><th>desc</th></tr></thead><tbody><tr><td>esuk</td><td>string</td><td>서드파티 유저의 유니크키 : 없는 경우 비로그인으로 식별합니다.</td></tr><tr><td>esun</td><td>string</td><td>서드파티 유저의 닉네임(UTF-8 encode) 없는 경우 <a data-footnote-ref href="#user-content-fn-1">랜덤 닉네임</a>을 부여합니다.</td></tr></tbody></table>

> **예시** view\.shoppinglive.naver.com/externals/{externalServiceId}/lives/{broadcastId}?<mark style="color:blue;">esuk</mark>=a8fYfb1ifFs88&<mark style="color:blue;">esun</mark>=%EB%8B%89%EB%84%A4%EC%9E%84

### 2. 뷰어에서 서드파티 로그인 요청

뷰어에서 로그인이 필요한 액션이 발생하는 경우, 뷰어에서 서드파티로 로그인을 요청합니다.

다음 두가지 방식으로 적용이 가능합니다.&#x20;

1. 뷰어 내부 웹뷰에서 로그인 페이지로 랜딩
2. 콜백을 수신하여 뷰어 외부(서드파티)에서 로그인 처리

#### 2.1 뷰어 내 웹뷰에서 로그인 페이지 랜딩

로그인 완료 후 랜딩할 라이브ID를 받을 부분을 %d로 설정하여 랜딩할 수 있습니다. 로그인이 완료된 경우, 해당 방송ID로 `esuk`과 `esun`을 추가하여 다시 뷰어를 호출(위 1번 가이드)합니다.

> **예시** <https://yourservice.com/member/login?returnBroadcast=><mark style="color:blue;">%d</mark>

```swift
ShoppingLive.loginWebViewUrl = "https://yourservice.com/member/login?returnBroadcast=%d"
```

#### 2.2 뷰어 외부에서 네이티브 로그인 처리 (콜백)

뷰어 외부에서 자체적으로 로그인 처리가 필요한 경우, 다음 예제와 같이 ShoppingLive.presentLoginView를 설정합니다.

위 2.1의 `loginWebViewUrl`이 nil인 경우에만 동작합니다.

```swift
ShoppingLive.presentLoginView = presentLoginView

func presentLoginView(_ completion: @escaping(_ esuk: String, _ esun: String, _ esug: String?, _ esua: String?) -> Void) {
    guard let vc = SampleLoginViewController.create(completion: completion) else { return }
    topNavigationController?.viewControllers.last?.present(vc, animated: true, completion: nil)
```

[^1]: 형용사 + 명사 조합 (ex. 귀여운+고양이)
