메서드

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

getStatus

await wepinSDK.getStatus()

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

Parameters

  • None

Return value

  • Future <WepinLifeCycle>

    • notInitialized: WepinSDK이 초기화되지 않음

    • initializing: WepinSDK초기화 진행 중

    • initialized: WepinSDK초기화 완료

    • beforeLogin: WepinSDK은 초기화되었으나 사용자는 로그인 되지 않음

    • login: 사용자가 로그인 되었고 Wepin에도 가입되어있음

    • loginBeforeRegister: 사용자가 로그인하였으나 Wepin에 가입되지 않음

Example

final status = await wepinSDK.getStatus();

login

login 변수는 다양한 인증 방법을 포함한 Wepin 로그인 라이브러리로, 사용자가 여러 방식으로 로그인할 수 있도록 합니다. 이메일 및 비밀번호 로그인, OAuth 제공자 로그인, ID 토큰 또는 액세스 토큰을 사용한 로그인 등을 지원합니다. 각 메서드에 대한 자세한 정보는 공식 라이브러리 문서 Login Library 가이드에서 확인할 수 있습니다.

Available Methods

이 메서드들은 다양한 로그인 시나리오를 지원하며, 필요에 맞는 적절한 방법을 선택할 수 있습니다.

Exception

Example

// OAuth 제공자를 사용한 로그인
final oauthResult = await wepinSDK.login.loginWithOauthProvider(provider: 'google', clientId: 'your-client-id');

// 이메일 및 비밀번호로 회원가입 및 로그인
final signUpResult = await wepinSDK.login.signUpWithEmailAndPassword(email: 'example@example.com', password: 'password123');

// ID 토큰을 사용한 로그인
final idTokenResult = await wepinSDK.login.loginWithIdToken(idToken: 'your-id-token', sign: 'your-sign');

// Wepin에 로그인
final wepinLoginResult = await wepinSDK.login.loginWepin(idTokenResult);

// 현재 로그인된 사용자 가져오기
final currentUser = await wepinSDK.login.getCurrentWepinUser();

// 로그아웃
await wepinSDK.login.logout();

loginWithUI

await wepinSDK.loginWithUI(BuildContext context, {required List<LoginProvider> loginProviders, String? email})

loginWithUI() 메서드는 위젯을 사용하여 로그인하는 기능을 제공하며, 로그인된 사용자의 정보를 반환합니다. 사용자가 이미 로그인되어 있는 경우, 위젯을 표시하지 않고 로그인된 사용자의 정보를 바로 반환합니다. 위젯 없이 로그인을 수행하려면, login 변수의 loginWepin() 메서드를 대신 사용해야 합니다.

이 메서드는 Wepin Workspace에서 인증 키를 삭제한 후에만 사용할 수 있습니다.

(Wepin Workspace > Development Tools menu > Login tab > Auth Key> Delete)

인증 키를 이전에 생성한 경우에만 인증 키 메뉴가 표시됩니다.

Supported Version 버전 0.0.4 이상에서 지원.

Parameters

  • context <BuildContext> Flutter에서 위젯 트리 내의 위치를 나타내며, 위젯의 위치를 찾고 네비게이션, 테마 데이터 접근 등의 기능을 제공합니다. loginWithUI을 호출할 때 현재 context를 전달하여 위젯이 UI 계층의 올바른 부분에 표시되도록 합니다.

  • loginProviders<List<LoginProvider>> - 위젯을 구성할 로그인 제공자들의 목록입니다. 빈 목록이 제공되면 이메일 로그인 기능만 사용할 수 있습니다.

    • provider <String> OAuth 로그인 제공자 (예: 'google', 'naver', 'discord', 'apple')

    • clientId <String> OAuth 로그인 제공자의 클라이언트 ID입니다.

  • email<String> optional email 매개변수는 위젯에서 로그인할 때 지정된 이메일 주소로 로그인할 수 있도록 합니다.

OAuth 로그인 기능(예: loginWithUI)을 사용하려면 OAuth 로그인 제공자를 설정해야 합니다. 이를 위해 먼저 Wepin Workspace에 OAuth 로그인 제공자 정보를 등록해야 합니다. OAuth 제공자 설정에 대한 자세한 내용은 Social Login OAuth Providers 문서를 참조하세요.

Return Value

  • Future<WepinUser>

    • status <String>

      성공 여부<'success'|'fail'>

    • userInfo <WepinUserInfo> optional - 사용자 정보

      • userId <String>

        Wepin 사용자 ID

      • email <String>

        Wepin에 로그인된 사용자의 이메일 주소

      • provider<String>

        로그인 제공자 <'google'|'apple'|'naver'|'discord'|'email'|'external_token'>

      • use2FA<bool>

        사용자 지갑에 2FA가 활성화되어 있는지 여부

    • userStatus <WepinUserStatus> - 사용자 상태

      • loginStatus <String>

        로그인 상태 <'complete' | 'pinRequired' | 'registerRequired'>

        사용자의 loginStatus 값이 'complete'가 아닌 경우, wepin에 register 해야 합니다.

      • pinRequired <bool> optional

        사용자 PIN 번호 필요 여부

    • walletId <String>

      Wepin 사용자의 지갑 ID

    • token <WepinToken> Wepin 토큰 정보

Exception

Example

// google, apple, discord, naver login
final res = await wepinSDK.loginWithUI(context,
  loginProviders: [
    {
      provider: 'google',
      clientId: 'google-client-id'
    },
    {
      provider: 'apple',
      clientId: 'apple-client-id'
    },
    {
      provider: 'discord',
      clientId: 'discord-client-id'
    },
    {
      provider: 'naver',
      clientId: 'naver-client-id'
    },
  ]);

// only email login
final res = await wepinSDK.loginWithUI(context,
  loginProviders: []);

//with specified email address
final res = await wepinSDK.loginWithUI(context,
  loginProviders: [], email: 'abc@abc.com');
  
if(res.userStatus.loginStatus != "complete"){
    final userInfo  = await wepinSDK.register(context);
}

openWidget

await wepinSDK.openWidget(BuildContext context)

위젯 창을 열어줍니다. 사용자가 로그인되어 있지 않으면 위젯 창이 열리지 않으므로, openWidget을 호출하기 전에 반드시 사용자가 Wepin에 로그인되어 있어야 합니다. 로그인하려면 loginWithUI 매서드 또는 login 변수의 loginWepin 메서드를 사용해야 합니다.

Parameters

  • context <BuildContext> Flutter에서 위젯 트리 내의 위치를 나타내며, 위젯의 위치를 찾고 네비게이션, 테마 데이터 접근 등의 기능을 제공합니다. openWidget을 호출할 때 현재 context를 전달하여 위젯이 UI 계층의 올바른 부분에 표시되도록 합니다.

Return Value

  • Future<void>

Exception

Example

await wepinSDK.openWidget(context);

closeWidget

wepinSDK.closeWidget()

위젯 창을 닫습니다. 창을 닫아도 로그아웃되지 않습니다.

Parameters

  • None

Return Value

  • void

Exception

Example

wepinSDK.closeWidget();

register

await wepinSDK.register(BuildContext context)

사용자를 Wepin에 등록합니다. 가입 및 로그인 후 Wepin 위젯의 등록 페이지가 열리며, Wepin 서비스에 등록(지갑 생성 및 계정 생성)을 진행합니다. 이 기능은 WepinSDKWepinLifeCycleloginBeforeRegister 상태일 때만 사용할 수 있습니다. loginWithUI 매서드 또는 login 변수의 loginWepin 메서드를 호출한 후, userStatusloginStatus 값이 'complete'가 아니면 이 메서드를 호출해야 합니다.

Parameters

  • context <BuildContext> 위젯 트리 내의 위치를 나타내며, 위젯의 위치를 찾고 네비게이션, 테마 데이터 접근 등의 기능을 제공합니다. register를 호출할 때 현재 context를 전달하여 위젯이 UI 계층의 올바른 부분에 표시되도록 합니다.

Return Value

  • Future<WepinUser>

    • status <String>

      성공 여부<'success'|'fail'>

    • userInfo <WepinUserInfo> optional - 사용자 정보

      • userId <String>

        Wepin 사용자 ID

      • email <String>

        Wepin에 로그인된 사용자의 이메일 주소

      • provider<String>

        로그인 제공자 <'google'|'apple'|'naver'|'discord'|'email'|'external_token'>

      • use2FA<bool>

        사용자 지갑에 2FA가 활성화되어 있는지 여부

    • userStatus <WepinUserStatus> - 사용자 상태

      • loginStatus <String>

        로그인 상태 <'complete' | 'pinRequired' | 'registerRequired'>

        사용자의 loginStatus 값이 'complete'가 아닌 경우, wepin에 register 해야 합니다.

      • pinRequired <bool> optional

        사용자 PIN 번호 필요 여부

    • walletId <String>

      Wepin 사용자의 지갑 ID

    • token <WepinToken> Wepin 토큰 정보

Exception

Example

final userInfo = await wepinSDK.register(context);

getAccounts

await wepinSDK.getAccounts({List<String>? networks, bool? withEoa})

앱에서 사용 가능한 사용자의 계정 정보(네트워크와 주소)를 반환합니다. 이 기능은 Wepin에 로그인한 후에만 사용할 수 있습니다. 파라미터가 없는 경우에는 사용자의 모든 계정 정보가 반환됩니다.

Parameters

  • networks <List<String>> optional

    반환받고자 하는 계정의 네트워크입니다. 네트워크로 지원하는 블록체인 목록은 아래 지원 블록체인 페이지에서 확인 가능합니다.

  • withEoa<bool> optional

    AA 계정이 있는 경우, EOA 계정도 포함하여 반환할지 여부를 지정합니다.

지원 블록체인

Return Value

  • Future <List<WepinAccount>>

    • address <String>

      사용자 계정의 주소

    • network <String>

      사용자 계정의 네트워크 종류

    • contract <String> optional

      토큰의 Contract 주소

    • isAA <bool> optional

      AA 계정인지 여부

Exception

Example

final result = await wepinSDK.getAccounts(
  networks: ['Ethereum'], 
  withEoa: true
);
  • response

[
  WepinAccount(
    address: "0x0000001111112222223333334444445555556666",
    network: "Ethereum",
  ),
  WepinAccount(
    address: "0x0000001111112222223333334444445555556666",
    network: "Ethereum",
    contract: "0x777777888888999999000000111111222222333333",
  ),
  WepinAccount(
    address: "0x4444445555556666000000111111222222333333",
    network: "Ethereum",
    isAA: true,
  ),
]

getBalance

await wepinSDK.getBalance({List<WepinAccount>? accounts})

정의 잔액(수량) 정보를 반환합니다. 이 기능은 Wepin에 로그인한 후에만 사용할 수 있습니다. accounts 파라미터가 없는 경우에는 사용자의 모든 계정의 잔액이 반환됩니다.

Parameters

  • accounts <List<WepinAccount>> optional

    • network <String>

      잔액을 조회할 사용자 계정의 네트워크 종류

    • address <String>

      잔액을 조회할 사용자 계정의 주소

    • isAA<bool> optional

      AA 계정인지 여부

Return Value

  • Future <List<WepinAccountBalanceInfo>>

    • network <String>

      사용자 계정의 네트워크 종류

    • address <String>

      사용자 계정의 주소

    • symbol <String>

      네트워크 심볼

    • balance <String>

      보유하고 있는 네트워크 코인의 수량

    • tokens <List<WepinTokenBalanceInfo>>

      • symbol <String>

        토큰 심볼

      • balance <String>

        보유하고 있는 토큰의 수량

      • contract <String>

        토큰 Contract 주소

Exception

Example

final result = await wepinSDK.getBalance([WepinAccount(
  address: '0x0000001111112222223333334444445555556666',
  network: 'Ethereum',
)]);
  • response

[
    WepinAccountBalanceInfo(
        network: "Ethereum",
        address: "0x0000001111112222223333334444445555556666",
        symbol: "ETH",
        balance: "1.1",
        tokens:[
            WepinTokenBalanceInfo(
                contract: "0x123...213",
                symbol: "TEST",
                balance: "10"
            ),
        ]
    )
]

getNFTs

await wepinSDK.getNFTs({required bool refresh, List<String>? networks})

사용자의 NFT를 반환합니다. 이 기능은 Wepin에 로그인한 후에만 사용할 수 있습니다. networks파라미터가 없는 경우에는 사용자의 모든 NFT 정보가 반환됩니다.

Parameters

  • refresh <bool> NFT 데이터를 새로 조회할지 여부

  • networks <List<String>> optional NFT를 필터링할 네트워크 이름 목록

Return Value

  • Future <List<WepinNFT>>

    • account <WepinAccount>

      • address <String>

        사용자 계정의 주소

      • network <String>

        용자 계정의 네트워크 종류

      • contract <String> optional

        토큰의 Contract 주소

      • isAA <bool> optional

        AA 계정인지 여부

    • contract <WepinNFTContract>

      • name <String> NFT Contract 이름

      • address <String> NFT Contract 주소

      • scheme <String> NFT의 스킴

      • description <String> optional NFT Contract의 설명

      • network <String> NFT Contract과 연결된 네트워크

      • externalLink <String> optional NFT Contract와 관련된 외부 링크

      • imageUrl <String> optional NFT Contract와 관련된 이미지 URL

    • name <String> NFT의 이름

    • description <String> NFT의 설명

    • externalLink <String> NFT와 관련된 외부 링크

    • imageUrl <String> NFT와 관련된 이미지 URL

    • contentUrl <String> optional NFT와 연결된 콘텐츠의 URL

    • quantity <int> NFT의 수량

    • contentType <String> NFT의 콘텐츠 유형<'image' | 'video'>

    • state <int> NFT의 상태.

Exception

Example

final result = await wepinSDK.getNFTs(refresh: true, networks: ['Ethereum']);
  • response

[
  WepinNFT(
    account: WepinAccount(
      address: "0x0000001111112222223333334444445555556666",
      network: "Ethereum",
      contract: "0x777777888888999999000000111111222222333333",
      isAA: true,
    ),
    contract: WepinNFTContract(
      name: "NFT Collection",
      address: "0x777777888888999999000000111111222222333333",
      scheme: "ERC721",
      description: "An example NFT collection",
      network: "Ethereum",
      externalLink: "https://example.com",
      imageUrl: "https://example.com/image.png",
    ),
    name: "Sample NFT",
    description: "A sample NFT description",
    externalLink: "https://example.com/nft",
    imageUrl: "https://example.com/nft-image.png",
    contentUrl: "https://example.com/nft-content.png",
    quantity: 1,
    contentType: "image/png",
    state: 0,
  ),
]

send

await wepinSDK.send(BuildContext context, {required WepinAccount account, WepinTxData? txData})

위젯을 이용하여 send기능을 수행하고 send 트랜젝션의 ID정보를 반환합니다. 이 기능은 Wepin에 로그인한 후에만 사용할 수 있습니다.

Parameters

  • context <BuildContext> -Flutter에서 위젯 트리 내의 위치를 나타내며, 위젯의 위치를 찾고 네비게이션, 테마 데이터 접근 등의 기능을 제공합니다. send를 호출할 때 현재 context를 전달하여 위젯이 UI 계층의 올바른 부분에 표시되도록 합니다.

  • account<WepinAccount>

    전송할 사용자의 계정 정보

    • network<String>

      전송할 네트워크 종류

    • address<String>

      전송할 계정의 주소

    • contract <String> optional

      토큰의 Contract 주소

  • txData <WepinTxData> optional

    • to <String> 전송 받을 주소

    • amount <String> 전송할 수량

Return Value

  • Future <WepinSendResponse>

    • txId <String> send 트랜잭션의 txID

Exception

Example

final result = await wepinSDK.send(context, {
    account: WepinAccount(
        address: '0x0000001111112222223333334444445555556666',
        network: 'Ethereum',
    ),
    txData: WepinTxData(
        to: '0x9999991111112222223333334444445555556666',
        amount: '0.1',
    )
})

// token send
final result = await wepinSDK.send(context, {
    account: WepinAccount(
        address: '0x0000001111112222223333334444445555556666',
        network: 'Ethereum',
        contract: '0x0000001111112222223333334444445555556666'
    ),
    txData: WepinTxData(
        to: '0x9999991111112222223333334444445555556666',
        amount: '0.1',
    )
})
  • response

WepinSendResponse(
    txId: "0x76bafd4b700ed959999d08ab76f95d7b6ab2249c0446921c62a6336a70b84f32"
)

receive

await wepinSDK.receive(BuildContext context, {required WepinAccount account})

receive 메서드는 지정된 계정과 연관된 계정 정보 페이지를 엽니다. 이 메서드는 Wepin에 로그인한 후에만 사용할 수 있습니다.

Supported Version 버전 0.0.4 이상에서 지원.

Parameters

  • context <BuildContext> Flutter에서 위젯 트리 내의 위치를 나타내며, 위젯의 위치를 찾고 네비게이션, 테마 데이터 접근 등의 기능을 제공합니다. receive 매서드를 호출할 때 현재 context를 전달하여 위젯이 UI 계층의 올바른 부분에 표시되도록 합니다.

  • account<WepinAccount>

    오픈할 페이지에 대한 계정을 제공합니다.

    • network<String>

      계정과 연관된 네트워크

    • address<String>

      계정의 주소

    • contract <String> optional

      토큰의 Contract 주소

Return Value

  • Future<WepinReceiveResponse>

    • account<WepinAccount>

      오픈된 페이제의 계정 정보

      • network<String>

        계정과 연관된 네트워크

        • address<String>

          계정의 주소

        • contract <String> optional

          토큰의 Contract 주소

Exception

Example

// Opening an account page
final result = await wepinSDK.receive(context, {
    account: WepinAccount(
      address: '0x0000001111112222223333334444445555556666',
      network: 'Ethereum',
    ),
})

// Opening a token page
final result = await wepinSDK.receive(context, {
  account: WepinAccount(
    address: '0x0000001111112222223333334444445555556666',
    network: 'Ethereum',
    contract: '0x9999991111112222223333334444445555556666'
  ),
})

finalize

await wepinSDK.finalize()

WepinSDK 사용을 종료합니다. WepinLifeCyclenotInitialized 로 변경됩니다.

Return Value

  • None

Example

await wepinSDK.finalize();

WepinError

Error CodeError MessageError Description

invalidAppKey

"InvalidAppKey"

The Wepin app key is invalid.

invalidParameters `

"InvalidParameters"

One or more parameters provided are invalid or missing.

invalidLoginProvider

"InvalidLoginProvider"

The login provider specified is not supported or is invalid.

invalidToken

"InvalidToken"

The token does not exist.

invalidLoginSession

"InvalidLoginSession"

The login session information does not exist.

notInitialized

"NotInitialized"

The WepinLoginLibrary has not been properly initialized.

alreadyInitialized

"AlreadyInitialized"

The WepinLoginLibrary is already initialized, so the logout operation cannot be performed again.

userCancelled

"UserCancelled"

The user has cancelled the operation.

unknownError

"UnknownError"

An unknown error has occurred, and the cause is not identified.

notConnectedInternet

"NotConnectedInternet"

The system is unable to detect an active internet connection.

failedLogin

"FailedLogin"

The login attempt has failed due to incorrect credentials or other issues.

alreadyLogout

"AlreadyLogout"

The user is already logged out, so the logout operation cannot be performed again.

invalidEmailDomain

"InvalidEmailDomain"

The provided email address's domain is not allowed or recognized by the system.

failedSendEmail

"FailedSendEmail"

The system encountered an error while sending an email. This is because the email address is invalid or we sent verification emails too often. Please change your email or try again after 1 minute.

requiredEmailVerified

"RequiredEmailVerified"

Email verification is required to proceed with the requested operation.

incorrectEmailForm

"incorrectEmailForm"

The provided email address does not match the expected format.

incorrectPasswordForm

"IncorrectPasswordForm"

The provided password does not meet the required format or criteria.

notInitializedNetwork

"NotInitializedNetwork"

The network or connection required for the operation has not been properly initialized.

requiredSignupEmail

"RequiredSignupEmail"

The user needs to sign up with an email address to proceed.

failedEmailVerified

"FailedEmailVerified"

The WepinLoginLibrary encountered an issue while attempting to verify the provided email address.

failedPasswordStateSetting

"FailedPasswordStateSetting"

Failed to set the password state. This error may occur during password management operations, potentially due to invalid input or system issues.

failedPasswordSetting

"failedPasswordSetting"

Failed to set the password. This could be due to issues with the provided password or internal errors during the password setting process.

existedEmail

"ExistedEmail"

The provided email address is already registered. This error occurs when attempting to sign up with an email that is already in use.

apiRequestError

"ApiRequestError"

There was an error while making the API request. This can happen due to network issues, invalid endpoints, or server errors.

incorrectLifecycleException

"IncorrectLifecycleException"

The lifecycle of the Wepin SDK is incorrect for the requested operation. Ensure that the SDK is in the correct state (e.g., initialized and login) before proceeding.

failedRegister

"FailedRegister"

Failed to register the user. This can occur due to issues with the provided registration details or internal errors during the registration process.

accountNotFound

"AccountNotFound"

The specified account was not found. This error is returned when attempting to access an account that does not exist in the Wepin.

nftNotFound

"NftNotFound"

The specified NFT was not found. This error occurs when the requested NFT does not exist or is not accessible within the user's account.

failedSend

"FailedSend"

Failed to send the required data or request. This error could be due to network issues, incorrect data, or internal server errors.

Last updated