FCLAuthSwift
is a Swift library for the Flow Client Library (FCL)
that enables Flow wallet authentication on iOS devices.
The demo app in this project shows how to use FCL inside an iOS app.
dependencies: [
.package(url: "https://github.com/zed-io/fcl-auth-swift.git", from: "0.0.6-beta")
]
You will need to configure your app information before using the authentication library.
FCLAuthSwift
ships with several built-in wallet providers (Dapper, Blocto),
but you can also define custom wallet providers if needed.
import FCLAuthSwift
// optional: define a custom wallet provider
let provider = FCLWalletProvider(
id: "foo",
name: "bar",
method: .httpPost,
endpoint: URL(string: "https://foo.com/api/")!
)
fcl.config(
appInfo: FCLAppInfo(
title: "FCL iOS Demo",
icon: URL(string: "https://foo.com/bar.png")!
),
// default providers are [.dapper, .blocto]
providers: [.dapper, .blocto, .custom(provider)]
)
fcl.authenticate(provider: .dapper) { result in
switch result {
case let .success(data):
print(data.address)
case let .failure(error):
print(error)
}
}
The data
variable is of type FCLAuthnResponse
, which contains the user's wallet address:
public struct FCLAuthnResponse {
public let address: String
}
The authentication library has an optional delegate to handle custom events or settings.
fcl.delegate = self
public protocol FCLAuthDelegate {
// Show loading while waiting for network response
func showLoading()
// Hide loading when API call is completed
func hideLoading()
}
extension FCLAuthDelegate {
// Configure which place to show authentication webview
// The default value is ASPresentationAnchor()
func presentationAnchor() -> UIWindow {
return ASPresentationAnchor()
}
}