jonasman / TeslaSwift

Swift library to access the Tesla API
MIT License
247 stars 71 forks source link

SwiftUI: usage example for native web login #176

Open KevM opened 6 months ago

KevM commented 6 months ago

I really appreciate the Usage example for Swift UI. The native web example is just different enough that I'm not sure what to do in the SwiftUI paradigm. My goal is to use native login to make MFA logins go smoother and get better password manager support.

 if let url = api.authenticateWebNativeURL() {
    UIApplication.shared.open(url)
}
...

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    Task { @MainActor in
        do {
            _ = try await api.authenticateWebNative(url: url)
            // Notify your code the auth is done
        } catch {
            print("Error")
        }
    }        
    return true
}

URL Types

A am also not sure what do for this guidance:

If you use deeplinks, add your callback URI scheme as a URL Scheme to your app under info -> URL Types

For the non-native login I added teslaswift://teslaswift as a "Allowed Redirect URI(s)" in the tesla developer dashboard to get things working.

jonasman commented 3 months ago

yeah we need a swiftui example, there is a way to get the callback in swiftui aswell via a modifier if i remember right.

If you register your call with a deeplink in the Tesla Dev Portal, you need to register that deeplink in Xcode too. Dont use teslaswift:// but choose one with your app's name