> For the complete documentation index, see [llms.txt](https://docs.wepin.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.wepin.io/deprecated/flutter-sdk/methods.md).

# 메서드

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'>
