# 메서드

wepin widget flutter SDK에서 제공하는 메서드입니다.

## openWidget

<mark style="color:blue;">`openWidget`</mark> 는 위젯 윈도우를 보여줍니다.&#x20;

### 예시

```dart
_wepin.openWidget();
```

## closeWidget

<mark style="color:blue;">`closeWidget`</mark> 는 위젯 윈도우를 닫습니다.

### 예시

```dart
_wepin.closeWidget();
```

## getAccounts

앱에서 사용 가능한 계정 정보를 반환합니다.  계정 정보에는 네트워크 이름과 주소가 들어 있습니다. 반환값은 <mark style="color:blue;">`Account`</mark>의 배열입니다. <mark style="color:blue;">`getAccounts`</mark> 는 위젯 로그인 이후에 사용 가능한 메서드입니다. &#x20;

```dart
List<Account> accounts = _wepin.getAccounts();
```

### Account

<mark style="color:blue;">`getAccounts`</mark> 함수의 반환 값 클래스의 인터페이스는 아래와 같으며, <mark style="color:blue;">`wepin_outputs.dart`</mark>에 정의되어 있습니다.

```dart
class Account {
    final dynamic? _network;  // 계정 블록체인 네트워크
    final dynamic? _address; // 계정주소
}
```

* **network**: *dynamic*\
  계정의 블록체인 네트워크 입니다. 각 네트워크의 이름은 아래에서 확인 가능합니다.

{% content-ref url="/pages/jNG611rZkq69C8zZKglh" %}
[지원 블록체인](/wepin/supported-blockchains.md)
{% endcontent-ref %}

* **address:** *dynamic*\
  계정 주소

## finalize

위핀이 초기 상태로 됩니다.

### 예시

```dart
_wepin.finalize();
```

## getStatus(Support from version 0.0.4-alpha)

위핀의 Lifecycle 상태 값을 반환합니다.

### 예시

```dart
await _wepin.getStatus()
```

### 반환값

* `not_initialized`: 위핀이 초기화 되어 있지 않음
* `initializing`: 위핀 초기화가 진행중
* `initialized`:위핀 초기화 완료됨
* `before_login`:위핀 초기화는 완료되었으나, 사용자가 로그인 되어 있지 않은 상태
* `login`: 사용자가 로그인 된 상태

## login(Support from version 0.0.4-alpha)

사용자가 로그인 되어 있지 않으면 위젯 윈도우를 보여주고,

이미 로그인 된 상태이면 로그인 된 사용자 정보를 반환합니다.

### 예시

```dart
await _wepin.login()
```

### WepinUser

함수의 반환 값 클래스의 인터페이스는 아래와 같으며, <mark style="color:blue;">`wepin_outputs.dart`</mark>에 정의되어 있습니다.

```dart
class WepinUser {
    final String _status;
    final UserInfo? _userInfo;
}

class UserInfo {
  final dynamic _userId;
  final dynamic _email;
  final dynamic _provider;
}
```

* **status**:  <'suceess' | 'fail'>\
  login  성공여부 <'suceess' | 'fail'>
* **UserInfo** : 사용자에 대한 정보
  * userId: 사용자의 ID
  * email: 사용자의 이메일 주소
  * provider: 로그인한 provider에 대한 정보<'google'|'apple'|'email'|'naver'|'discord'|'external\_token'>

## getSignForLogin (Support from version 0.0.4-alpha)

[<mark style="color:blue;">`loginWithExternalToken()`</mark>](#loginwithexternaltoken-support-from-version-0.0.4-alpha)로그인을 하기 위해 사용되는 서명된 토큰 값을 생성하여 반환합니다.

### 예시

```dart
_wepin.getSignForLogin(privateKey, token);
```

### Parameter

* **privateKey\<String>**: loginWithExternalToken()에 사용할 token값을 서명하기 위한 PrivateKey 값
* **token\<String>**: OAtuh에 로그인 한 후 받은 token 값

{% hint style="info" %}
서명에 사용할 키는 [위핀 워크스페이스](https://workspace.wepin.io/login)에서 발급 받을 수 있습니다. 개발 도구 메뉴에서 로그인 탭의 인증키 발급 받기를 클릭하여 인증키를 확인하세요.
{% endhint %}

### Return Value

* **signed token\<String>**: token 을 privatekey로 서명한 값

## loginWithExternalToken (Support from version 0.0.4-alpha)

OAuth에 로그인 후 받은 token  값으로 위핀에 로그인 합니다.

### 예시

```dart
await _wepin.loginWithExternalToken(token, signed token)
```

### Parameter

* **token\<String>**: 로그인에 사용될 외부 토큰 값입니다. 예를 들어, idToken과 같은 값이 사용됩니다.
* **signed token\<String>**: 첫 번째 매개변수로 [<mark style="color:blue;">`getSignForLogin()`</mark>](#getsignforlogin-support-from-version-0.0.4-alpha)  을  실행 후 받은 서명값.

### Return Value

* **WepinUser**

  함수의 반환 값 클래스의 인터페이스는 아래와 같으며, <mark style="color:blue;">`wepin_outputs.dart`</mark>에 정의되어 있습니다.

  ```dart
  class WepinUser {
      final String _status;
      final UserInfo? _userInfo;
  }

  class UserInfo {
    final dynamic _userId;
    final dynamic _email;
    final dynamic _provider;
  }
  ```

  * **status**:  <'suceess' | 'fail'>\
    login  성공여부 <'suceess' | 'fail'>
  * **UserInfo** : 사용자에 대한 정보
    * userId: 사용자의 ID
    * email: 사용자의 이메일 주소
    * provider: 로그인한 provider에 대한 정보<'google'|'apple'|'email'|'naver'|'discord'|'external\_token'>

## logout(Support from version 0.0.4-alpha)

<mark style="color:blue;">`logout`</mark>위핀에 로그인된 사용자를 로그아웃 시켜줍니다.

### 예시

```dart
await _wepin.logout()
```

### Return Value

* **WepinUser**

  함수의 반환 값 클래스의 인터페이스는 아래와 같으며, <mark style="color:blue;">`wepin_outputs.dart`</mark>에 정의되어 있습니다.

  ```dart
  class WepinUser {
      final String _status;
      final UserInfo? _userInfo;
  }

  class UserInfo {
    final dynamic _userId;
    final dynamic _email;
    final dynamic _provider;
  }
  ```

  * **status**:  <'suceess' | 'fail'>\
    login  성공여부 <'suceess' | 'fail'>
  * **UserInfo** : 사용자에 대한 정보
    * userId: 사용자의 ID
    * email: 사용자의 이메일 주소
    * provider: 로그인한 provider에 대한 정보<'google'|'apple'|'email'|'naver'|'discord'|'external\_token'>


---

# 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://docs.wepin.io/deprecated/flutter-sdk/methods.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.
