User Public Key (SDK)

Getting the Public Key

The getWallet function in the SDK returns the public key of the user's asymmetric key pair. The user might be asked to go through a verification process before the public key is returned.

This function returns the same response as the User Public Key API endpoint.

{
    "status": "SUCCESS",
    "wallet": {
        "publicKey": "0x5fce1e85aa30d8b96bc3737f896d7b5b2a3ff47dc85b919fea052b282170cb0d"
    }
}

📘

Use User Public Key API endpoint instead

For lower user friction, we recommend using the User Public Key API endpoint instead of the SDK. The User Public Key API endpoint doesn't require user verification.

The SDK operation will always require user verification unless you provide a user when initializing the SDK

Public key format

The public key is returned as the compressed EdDSA public key in hex format as defined in RFC 8032.

Calling SDK

Here are some sample code snippets to call the SDK:

await sdk.getWallet();
sdk.getWallet(
    Callback(
        onSuccess = { response: JsonResponse ->
            Log.d("onSuccess", response.toString())
        },
        onFailure = { error: JsonResponse ->
            Log.d("onFailure", error.toString())
        },
    ),
)

sdk.getWallet(
  callback: Callback(
    onSuccess: { (result: JsonResponse) in
      print("onSuccess")
      print(result.description)
    },
    onFailure: { (error: JsonResponse) in
      print("onFailure")
      print(error.description)
    }
  )
)
await sdk.getWallet();
await sdk.getWallet();

On success, the callback onSuccess or the Promise resolve function is called with the response as a JSON object. This is what the data looks like:

{
    "status": "SUCCESS",
    "wallet": {
        "publicKey": "0x5fce1e85aa30d8b96bc3737f896d7b5b2a3ff47dc85b919fea052b282170cb0d"
    }
}

Here's a reference implementation of this code for JS SDK: https://jsfiddle.net/passbird/n86yhre5/

Error status

Callback onFailure or the Promise reject function is called when the user cancels the operation or if there's an error. The error object contains a status field, a string indicating the status of the operation. Here's what the error object looks like:

{
  status: "USER_REQUEST_DENIED"
}

Here's a table of all possible error status returned by the SDK

StatusDescription
USER_REQUEST_DENIEDThe user has denied the request.
INVALID_EMAILThe SDK has been initialized with an invalid user email.
APP_ID_REQUIREDNo app-id was provided when initializing the SDK.
You can find the app id in the MetaKeep Developer Console.
APP_NOT_FOUNDThe provided app-id is invalid.
You can find the correct app-id in the MetaKeep Developer Console.
SOMETHING_WENT_WRONGAn unknown error occurred.
Please get in touch with us if you continue seeing this error.

© Copyright 2024, Passbird Research Inc.