# LNURL-Auth ## Usage
Rust
```rust,no_run // 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
```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
```typescript // 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
```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
```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](https://github.com/lnurl/luds/blob/luds/01.md) LNURL bech32 encoding - [LUD-04](https://github.com/lnurl/luds/blob/luds/04.md) `auth` base spec - [LUD-17](https://github.com/lnurl/luds/blob/luds/17.md) Support for keyauth prefix with non-bech32-encoded LNURL URLs