WEPIN Developer Documentation
WepinBlogContact
한국어
한국어
  • 시작하기
    • 소개
  • 위핀
    • 특징
    • 아키텍처
      • 키 생성
      • 서명
      • 키 백업
    • 워크스페이스
      • 앱 등록 및 키 발급
      • 네트워크 및 자산 추가
      • 위젯 디자인
    • 지원 블록체인
    • 계정 추상화
  • 로그인
    • 개요
    • 소셜 로그인 인증 프로바이더
      • Email/Password
      • Google
      • Apple
      • Discord
      • Naver
      • Facebook
      • Line
      • Kakao
    • 사용자 인터페이스
    • 로그인 일원화
    • 리소스
  • 위젯 연동
    • 사전 준비
    • Web: JavaScript SDK
      • 로그인
        • 설치
        • 초기화하기
        • 메서드
      • 핀 패드
        • 설치
        • 초기화하기
        • 메서드
      • 위젯
        • 설치
        • 초기화하기
        • 메서드
        • 확인하기
      • 프로바이더
        • Ethereum Provider
        • Kaia Provider
        • Solana Provider
        • Wagmi Connector
      • 월렛 어댑터
        • Solana Wallet Adapter
    • Android: Java & Kotlin SDK
      • 로그인
        • 설치
        • 초기화하기
        • 메서드
      • 핀 패드
        • 설치
        • 초기화하기
        • 메서드
      • 위젯
        • 설치
        • 초기화하기
        • 메서드
    • iOS: Swift SDK
      • 로그인
        • 설치
        • 초기화하기
        • 메서드
      • 핀 패드
        • 설치
        • 초기화하기
        • 메서드
      • 위젯
        • 설치
        • 초기화하기
        • 메서드
    • Flutter SDK
      • 로그인
        • 설치
        • 초기화하기
        • 메서드
      • 위젯
        • 설치
        • 초기화하기
        • 메서드
        • 확인하기
      • 핀 패드
        • 설치
        • 초기화하기
        • 메서드
    • React Native SDK
      • 로그인
        • 설치
        • 초기화
        • 메서드
    • Unity SDK
      • 설치
      • 초기화하기
      • 메서드
      • 확인하기
    • Compose Multiplatform SDK
      • 로그인
        • 설치
        • 초기화하기
        • 메서드
      • 위젯
        • 설치
        • 초기화하기
        • 메서드
        • 확인하기
  • API
    • 개요
    • 등록 절차
    • 로그인
    • 지갑 생성 및 관리
    • 토큰 및 NFT 조회
    • 트랜잭션
  • Deprecated
    • Web: JavaScript SDK
      • SDK
        • 설치
        • 초기화하기
        • 메서드
        • 확인하기
      • 프로바이더
        • Ethereum Provider
      • Wagmi Connector
    • Android: Java & Kotlin SDK
      • 설치
      • 초기화하기
      • 메서드
      • 확인하기
    • iOS: Swift SDK
      • 설치
      • 초기화하기
      • 메서드
      • 확인하기
    • Flutter SDK
      • 설치
      • 초기화하기
      • 메서드
      • 확인하기
    • React Native SDK
      • 설치
      • 초기화하기
      • 메서드
      • 확인하기
      • 프로바이더
        • EVM 호환
  • 기타
    • 로고 & 브랜드 가이드라인
Powered by GitBook
On this page
  • getStatus
  • loginWithUI
  • openWidget
  • closeWidget
  • register
  • getAccounts
  • getBalance
  • getNFTs
  • send
  • receive
  • finalize
  • Parameters
  • Return Value
  • Example
  • login
  • Available Methods

Was this helpful?

  1. 위젯 연동
  2. Android: Java & Kotlin SDK
  3. 위젯

메서드

getStatus

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

Parameters

  • None

Return Value

  • CompletableFutuer<WepinLifeCycle>

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

    • INITIALIZING: WepinSDK초기화 진행 중

    • INITIALIZED: WepinSDK초기화 완료

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

    • LOGIN: 사용자가 로그인 되었고 위핀에도 가입되어있음

    • LOGIN_BEFORE_REGISTER: 사용자가 로그인하였으나 위핀에 가입되지 않음

Example

CompletableFuture<WepinLifeCycle> res = wepinWidget.getStatus()
res.whenComplete((state, error) -> {
    if (error ==  null) {
        Log.d(TAG, "Wepin SDK Lifecycle is $state");
    } else {
        Log.d(TAG, "loginWithUI error: $error");
    }
});
val res = wepinWidget.getStatus()
res?.whenComplete { state, error ->
    if (error == null) {
        Log.d(TAG, "Wepin SDK Lifecycle is $state")
    } else {
        Log.d(TAG, "getStatus error: $error")
    }

loginWithUI

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

Parameters

  • context <Context> - 애플리케이션 특정 리소스와 클래스에 대한 접근을 제공하고 애플리케이션 환경에 관한 정보를 제공하기 때문에 Android에서 필수적입니다. 이는 새로운 액티비티를 시작하거나, 애플리케이션 자산에 접근하거나, 시스템 서비스를 검색하는 등의 작업에 사용됩니다. loginWithUI(context)와 같은 메서드를 호출할 때는 올바른 작동을 보장하기 위해 적절한 Context(예: Activity 또는 Application context)를 전달해야 합니다. UI 관련 작업(예: 새 화면 열기)의 경우에는 Activity context를 사용하는 것이 권장됩니다.

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

    • provider<String> OAuth 로그인 프로바이더(예: 'google', 'naver', 'discord', 'apple')

    • clientId<String> OAuth 로그인 프로바이더의 클라이언트 ID입니다.

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

Return Value

  • CompletableFuture<WepinUser>

    • status <String> 성공여부<'success'|'fail'>

    • userInfo <WepinUserInfo> optional 사용자 정보

      • userId <String> Wepin 사용자 ID

      • email <String> Wepin 에 로그인된 사용자의 이메일 주소

      • provider <String> 로그인 프로바이더 이름 <'google'|'apple'|'naver'|'discord'|'email'|'external_toekn'>

      • use2FA <Boolean> 사용자 지갑에 2FA가 활성화 되어 있는지 여부

    • userStatus <WepinUserStatus> 사용자 상태

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

      • pinRequired <Boolean> optional 사용자 PIN 번호 필요 여부

    • walletId <String> optional Wepin 사용자의 지갑 ID

    • token <WepinToken> Wepin Token 정보

      • accessToken <String> Wepin Access Token

      • refreshToken <String> Wepin Refresh Token

Example

Context context = this;
List<LoginProviderInfo> providers = List.of(new LoginProviderInfo("google", "GOOGLE_CLIENT_ID"));
CompletableFuture<WepinUser> res = wepinWidget.loginWithUI(context, providers, null);
res.whenComplete((user, error) -> {
    if (error ==  null) {
        Log.d(TAG, "Wepin User is $user");
    } else {
        Log.d(TAG, "loginWithUI error: $error");
    }
});
val res = wepinWidget.loginWithUI(context, providers, email)
res?.whenComplete { wepinUser, error ->
    if (error == null) {
        Log.d(TAG, "Wepin User is $wepinUser")
    } else {
        Log.d(TAG, "loginWithUI error: $error")
    }

openWidget

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

Parameters

  • context <Context> 애플리케이션 특정 리소스와 클래스에 대한 접근을 제공하고 애플리케이션 환경에 관한 정보를 제공하기 때문에 Android에서 필수적입니다. 이는 새로운 액티비티를 시작하거나, 애플리케이션 자산에 접근하거나, 시스템 서비스를 검색하는 등의 작업에 사용됩니다. openWidget(context)와 같은 메서드를 호출할 때는 올바른 작동을 보장하기 위해 적절한 Context(예: Activity 또는 Application context)를 전달해야 합니다. UI 관련 작업(예: 새 화면 열기)의 경우에는 Activity context를 사용하는 것이 권장됩니다.

Return Value

  • CompletableFuture<Boolean>

Example

Context context = this;
CompletableFuture<Boolean> res = wepinWidget.openWidget(context);
res.whenComplete((result, error) -> {
    if (error ==  null) {
        Log.d(TAG, "openWidget Result is $user");
    } else {
        Log.d(TAG, "openWidget error: $error");
    }
});
val res = wepinWidget.openWidget(context)
res?.whenComplete { result, error ->
    if (error == null) {
        Log.d(TAG, "openWidget result is $result")
    } else {
        Log.d(TAG, "openWidget error: $error")
    }

closeWidget

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

Parameters

  • None

Return Value

  • None

Example

wepinWidget.closeWidget();
wepinWidget.closeWidget()

register

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

Parameters

  • context <Context> 애플리케이션 특정 리소스와 클래스에 대한 접근을 제공하고 애플리케이션 환경에 관한 정보를 제공하기 때문에 Android에서 필수적입니다. 이는 새로운 액티비티를 시작하거나, 애플리케이션 자산에 접근하거나, 시스템 서비스를 검색하는 등의 작업에 사용됩니다. register(context)와 같은 메서드를 호출할 때는 올바른 작동을 보장하기 위해 적절한 Context(예: Activity 또는 Application context)를 전달해야 합니다. UI 관련 작업(예: 새 화면 열기)의 경우에는 Activity context를 사용하는 것이 권장됩니다.

Return Value

  • CompletableFuture<WepinUser>

    • status <String> 성공여부<'success'|'fail'>

    • userInfo <WepinUserInfo> optional 사용자 정보

      • userId <String> Wepin 사용자 ID

      • email <String> Wepin 에 로그인된 사용자의 이메일 주소

      • provider <String> 로그인 프로바이더 이름 <'google'|'apple'|'naver'|'discord'|'email'|'external_toekn'>

      • use2FA <Boolean> 사용자 지갑에 2FA가 활성화 되어 있는지 여부

    • userStatus <WepinUserStatus> 사용자 상태

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

      • pinRequired <Boolean> optional 사용자 PIN 번호 필요 여부

    • walletId <String> optional Wepin 사용자의 지갑 ID

    • token <WepinToken> Wepin Token 정보

      • accessToken <String> Wepin Access Token

      • refreshToken <String> Wepin Refresh Token

Example

Context context = this;
CompletableFuture<WepinUser> res = wepinWidget.register(context);
res.whenComplete((wepinUser, error) -> {
    if (error ==  null) {
        Log.d(TAG, "Wepin User is $wepinUser");
    } else {
        Log.d(TAG, "register error: $error");
    }
});
val res = wepinWidget.register(context)
res?.whenComplete { wepinUser, error ->
    if (error == null) {
        Log.d(TAG, "Wepin User is $wepinUser")
    } else {
        Log.d(TAG, "register error: $error")
    }

getAccounts

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

Parameters

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

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

Return Value

  • CompletableFuture<List<WepinAccount>>

    • address <String> 사용자 계정의 주소

    • network <String> 사용자 계정의 네트워크 종류

    • contract <String> optional 토큰의 Contract 주소

    • isAA <Boolean> optional AA 계정인지 여부

Example

List<String> networks = List.of("Ethereum", "Kaia");
CompletableFuture<List<WepinAccount>> res = wepinWidget.getAccounts(networks, null);
res.whenComplete((result, error) -> {
    if (error ==  null) {
        Log.d(TAG, "WepinAccount List is $result");
    } else {
        Log.d(TAG, "getAccounts error: $error");
    }
});
val res = wepinWidget.getAccounts(networks)
res?.whenComplete { accounts, error ->
    if (error == null) {
        Log.d(TAG, "Account List is $accounts")
    } else {
        Log.d(TAG, "getAccounts error: $error")
    }

getBalance

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

Parameters

  • accounts <List<WepinAccount>> optional

    • network <String> 잔액을 조회할 사용자 계정의 네트워크 종류

    • address <String> 잔액을 조회할 사용자 계정의 주소

    • isAA <Boolean> optional AA계정인지 여부

Return Value

  • CompletableFuture<List<WepinAccountBalanceInfo>>

    • network <String> 사용자 계정의 네트워크 종류

    • address <String> 사용자 계정의 주소

    • symbol <String> 네트워크 심볼

    • balance <String> 보유하고 있는 네트워크 코인의 수량

    • token <List<WepinTokenBalanceInfo>>

      • symbol <String> 토큰 심볼

      • balance <String> 보유하고 있는 토큰의 수량

      • contract <String> 토큰 Contract 주소소

Example

CompletableFuture<List<WepinAccountBalanceInfo>> res = wepinWidget.getBalance(accounts);
res.whenComplete((result, error) -> {
    if (error ==  null) {
        Log.d(TAG, "Balances is $result");
    } else {
        Log.d(TAG, "getBalance error: $error");
    }
});
val res = wepinWidget.getBalance()
res?.whenComplete { balance, error ->
    if (error == null) {
        Log.d(TAG, "Balance is $balance")
    } else {
        Log.d(TAG, "getBalance error: $error")
    }

getNFTs

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

Parameters

  • refresh <Boolean> NFT 데이터를 온체인에서 새로 조회할지 여부

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

Return Value

  • CompletableFuture<List<WepinNFT>>

    • account <WepinAccount>

      • address <String> 사용자 계정의 주소

      • network <String> 사용자 계정의 네트워크 종류

      • contract <String> optional 토큰의 Contract 주소

      • isAA <Boolean> 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> optional NFT의 수량

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

    • state <Int> NFT의 상태

Example

CompletableFuture<List<WepinNFT>> res = wepinWidget.getNFTs(true, null);
res.whenComplete((result, error) -> {
    if (error ==  null) {
        Log.d(TAG, "NFT List is $result");
    } else {
        Log.d(TAG, "getNFTs error: $error");
    }
});
val res = wepinWidget.getNFTs(true)
res?.whenComplete { nfts, error ->
    if (error == null) {
        Log.d(TAG, "Wepin NFT List is $nfts")
    } else {
        Log.d(TAG, "getNFTs error: $error")
    }

send

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

Parameters

  • context <Context> 애플리케이션 특정 리소스와 클래스에 대한 접근을 제공하고 애플리케이션 환경에 관한 정보를 제공하기 때문에 Android에서 필수적입니다. 이는 새로운 액티비티를 시작하거나, 애플리케이션 자산에 접근하거나, 시스템 서비스를 검색하는 등의 작업에 사용됩니다. send(context)와 같은 메서드를 호출할 때는 올바른 작동을 보장하기 위해 적절한 Context(예: Activity 또는 Application context)를 전달해야 합니다. UI 관련 작업(예: 새 화면 열기)의 경우에는 Activity context를 사용하는 것이 권장됩니다.

  • account <WepinAccount>

    • address <String> 사용자 계정의 주소

    • network <String> 사용자 계정의 네트워크 종류

    • contract <String> optional 토큰의 Contract 주소

    • isAA <Boolean> optional AA 계정인지 여부

  • txData <WepinTxData> optional

    • toAddress <String> 전송 받을 주소

    • amount <String> 전송할 수량

Return Value

  • CompletableFuture<WepinSendResponse>

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

Example

Context context = this;
CompletableFuture<WepinSendResponse> res = wepinWidget.send(context, account);
res.whenComplete((sendResult, error) -> {
    if (error ==  null) {
        Log.d(TAG, "Send Result is $sendResult");
    } else {
        Log.d(TAG, "send error: $error");
    }
});
val res = wepinWidget.send(context, account, txData)
res?.whenComplete { result, error ->
    if (error == null) {
        Log.d(TAG, "Send Result is $result")
    } else {
        Log.d(TAG, "send error: $error")
    }

receive

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

Parameters

  • context <Context> 애플리케이션 특정 리소스와 클래스에 대한 접근을 제공하고 애플리케이션 환경에 관한 정보를 제공하기 때문에 Android에서 필수적입니다. 이는 새로운 액티비티를 시작하거나, 애플리케이션 자산에 접근하거나, 시스템 서비스를 검색하는 등의 작업에 사용됩니다. receive(context)와 같은 메서드를 호출할 때는 올바른 작동을 보장하기 위해 적절한 Context(예: Activity 또는 Application context)를 전달해야 합니다. UI 관련 작업(예: 새 화면 열기)의 경우에는 Activity context를 사용하는 것이 권장됩니다.

  • account <WepinAccount>

    • address <String> 사용자 계정의 주소

    • network <String> 사용자 계정의 네트워크 종류

    • contract <String> optional 토큰의 Contract 주소

    • isAA <Boolean> optional AA 계정인지 여부

Return Value

  • CompletableFuture<WepinReceiveResponse>

    • account <WepinAccount>

      • address <String> 사용자 계정의 주소

      • network <String> 사용자 계정의 네트워크 종류

      • contract <String> optional 토큰의 Contract 주소

      • isAA <Boolean> optional AA 계정인지 여부

Example

Context context = this;
CompletableFuture<WepinReceiveResponse> res = wepinWidget.receive(context, account);
res.whenComplete((result, error) -> {
    if (error ==  null) {
        Log.d(TAG, "Receive Result is $result");
    } else {
        Log.d(TAG, "receive error: $error");
    }
});
val res = wepinWidget.receive(context, account)
res?.whenComplete { result, error ->
    if (error == null) {
        Log.d(TAG, "Receive Result is $result")
    } else {
        Log.d(TAG, "receive error: $error")
    }

finalize

wepinWidget.finalize()

Wepin Widget SDK 사용을 종료합니다.

Parameters

  • None

Return Value

  • None

Example

wepinWidget.finalize();
wepinWidget.finalize()

login

WepinWidget 에 통합된 WepinLogin 을 사용하지 않고 별도의 WepinLogin을 사용할 때, 두 SDK 의 버전이 동일하지 않은 경우 에러가 발생할 수 있습니다.

Available Methods

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

Exception

Example

Copy

// OAuth Provider를 사용한 로그인
wepinSDK.login.loginWithOauthProvider("google", "your-client-id")
    .thenCompose { authResult ->
        // ID Token을 사용한 로그인
        wepinSDK.login.loginWithIdToken(authResult.idToken)
    }.thenCompose { idTokenResult ->
        // 위핀에 로그인
        wepinSDK.login.loginWepin(idTokenResult)
    }.thenAccept { user ->
        Log.d("WepinSDK", "로그인 성공! 사용자 정보: $user")
    }.exceptionally { e ->
        Log.e("WepinSDK", "로그인 실패: ${e.message}", e)
        null
    }

// 이메일 및 비밀번호로 회원가입 및 로그인
wepinSDK.login.signUpWithEmailAndPassword(
    email = 'example@example.com', 
    password = 'password123'
).thenAccept { signUpResult ->
    Log.d("WepinSDK", "로그인 성공! 사용자 정보: $user")
}.exceptionally { error ->
    if (error is WepinError) {
    }
}

// 현재 로그인된 사용자 가져오기
var currentUser = wepinSDK.login.getCurrentWepinUser()
    .thenAccept { user ->
        Log.d("WepinSDK", "현재 사용자: $user")
    }.exceptionally { e ->
        Log.e("WepinSDK", "사용자 가져오기 실패", e)
        null
    }

// 로그아웃
wepinSDK.login.logout()
    .thenAccept { result ->
        Log.d("WepinSDK", "로그아웃 결과: $result")
    }.exceptionally { e ->
        Log.e("WepinSDK", "로그아웃 실패", e)
        null
    }    
Previous초기화하기NextiOS: Swift SDK

Last updated 28 days ago

Was this helpful?

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

지원 블록체인
Login Library 가이드
loginWithOauthProvider
signUpWithEmailAndPassword
loginWithEmailAndPassword
loginWithIdToken
loginWithAccessToken
getRefreshFirebaseToken
loginWepin
getCurrentWepinUser
logout
WepinError