Files
breez-sdk-docs/src/guide/lnurl_auth.md
ruben beck a9717ee13c fix typo
2023-07-06 11:38:48 +02:00

3.9 KiB

LNURL-Auth

Usage

Rust
// Endpoint can also be of the form:
// keyauth://domain.com/auth?key=val
let lnurl_auth_url = "lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttvdankjm3lw3skw0tvdankjm3xdvcn6vtp8q6n2dfsx5mrjwtrxdjnqvtzv56rzcnyv3jrxv3sxqmkyenrvv6kve3exv6nqdtyv43nqcmzvdsnvdrzx33rsenxx5unqc3cxgeqgntfgu";

if let Ok(LnUrlAuth{data: ad}) = parse(lnurl_auth_url).await {
    match sdk.lnurl_auth(ad).await {
        Ok(LnUrlCallbackStatus::Ok) => {
            info!("Successfully authenticated")
        }
        Ok(LnUrlCallbackStatus::ErrorStatus { data }) => {
            error!("Failed to authenticate: {}", data.reason)
        }
        Err(e) => {
            error!("Failed to connect: {e}")
        }
    }
}
Swift
// Endpoint can also be of the form:
// keyauth://domain.com/auth?key=val
let lnurlAuthUrl = "lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttvdankjm3lw3skw0tvdankjm3xdvcn6vtp8q6n2dfsx5mrjwtrxdjnqvtzv56rzcnyv3jrxv3sxqmkyenrvv6kve3exv6nqdtyv43nqcmzvdsnvdrzx33rsenxx5unqc3cxgeqgntfgu"

do {
 let inputType = try parseInput(s: lnurlAuthUrl)
 if case .lnUrlAuth(let data) = inputType {
   let result = try sdk.lnurlAuth(reqData: data)
   switch result {
   case .ok:
     print("Successfully authenticated")
   case .errorStatus(let data):
     print("Failed to authenticate")
   }
 }
} catch {
    // handle error
}
React Native
// Endpoint can also be of the form:
// keyauth://domain.com/auth?key=val
let lnurlAuthUrl = "lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttvdankjm3lw3skw0tvdankjm3xdvcn6vtp8q6n2dfsx5mrjwtrxdjnqvtzv56rzcnyv3jrxv3sxqmkyenrvv6kve3exv6nqdtyv43nqcmzvdsnvdrzx33rsenxx5unqc3cxgeqgntfgu";

try {
    const input = await parseInput(lnurlAuthUrl)
    if (input.type === InputType.LNURL_AUTH) {
        const result = await lnurlAuth(input.data)
        if (result.status === "ok") {
            print("Successfully authenticated")
        } else {
            print("Failed to authenticate")
        }
    }    
} catch (error) {
    console.log(error)
}
Dart
// Endpoint can also be of the form:
// keyauth://domain.com/auth?key=val
String lnurlAuthUrl = "lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttvdankjm3lw3skw0tvdankjm3xdvcn6vtp8q6n2dfsx5mrjwtrxdjnqvtzv56rzcnyv3jrxv3sxqmkyenrvv6kve3exv6nqdtyv43nqcmzvdsnvdrzx33rsenxx5unqc3cxgeqgntfgu";

try {
    InputType inputType = await parse(s: lnurlAuthUrl);
    if (inputType is InputType_LnUrlAuth) {
        LnUrlCallbackStatus result = await lnurlAuth(reqData: inputType.data);
        if (result is LnUrlCallbackStatus_Ok) {
            print("Successfully authenticated");
        } else {
            print("Failed to authenticate");
        }
    }
} catch (error) {
    // handle error
}
Python
# Endpoint can also be of the form:
# keyauth://domain.com/auth?key=val
lnurlAuthUrl = "lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttvdankjm3lw3skw0tvdankjm3xdvcn6vtp8q6n2dfsx5mrjwtrxdjnqvtzv56rzcnyv3jrxv3sxqmkyenrvv6kve3exv6nqdtyv43nqcmzvdsnvdrzx33rsenxx5unqc3cxgeqgntfgu"

try:
    parsed_input = breez_sdk.parse_input(lnurl_auth_url)     
    if isinstance(parsed_input, breez_sdk.InputType.LN_URL_AUTH):         
        result = sdk_services.lnurl_auth(parsed_input.data)        
        if result.is_ok():
            print("Successfully authenticated")
        else:
            print("Failed to authenticate")
except Exception as error:
    # Handle error

Supported Specs

  • LUD-01 LNURL bech32 encoding
  • LUD-04 auth base spec
  • LUD-17 Support for keyauth prefix with non-bech32-encoded LNURL URLs