Use a reverse-domain redirect scheme for the native app
- Android/iOS now return to cat.ikerdemo.musify:/callback instead of musify://callback: a private-use scheme based on a domain we own (RFC 8252 section 7.1), so another app is unlikely to claim it. - The Musify Native app no longer needs devMode: loopback and custom scheme redirects are both valid for a native app. - zitadel-init also updates an existing app's config, so the change reaches instances created before it (the client id is kept). - iOS takes the scheme from everything before the first ':', since the new URI has a single slash.
This commit is contained in:
@@ -12,5 +12,5 @@ actual object AppConfig {
|
||||
|
||||
// Matches CFBundleURLTypes in Info.plist and the redirect URI registered
|
||||
// for the "Musify Native" app in Zitadel.
|
||||
actual val nativeRedirectUri: String = "musify://callback"
|
||||
actual val nativeRedirectUri: String = "cat.ikerdemo.musify:/callback"
|
||||
}
|
||||
|
||||
@@ -23,14 +23,15 @@ private class PresentationContextProvider : NSObject(), ASWebAuthenticationPrese
|
||||
/**
|
||||
* `ASWebAuthenticationSession` owns the whole round trip: it opens a system
|
||||
* browser sheet at [authorizeUrl] (Zitadel's hosted login, with its
|
||||
* "Regístrate" link) and intercepts the `musify://` redirect itself, no app
|
||||
* "Regístrate" link) and intercepts the `cat.ikerdemo.musify:` redirect itself, no app
|
||||
* delegate / `onOpenURL` wiring required.
|
||||
*/
|
||||
@OptIn(ExperimentalForeignApi::class)
|
||||
actual class BrowserAuthLauncher actual constructor() {
|
||||
actual suspend fun launch(authorizeUrl: String, redirectUri: String): String =
|
||||
suspendCancellableCoroutine { continuation ->
|
||||
val scheme = redirectUri.substringBefore("://")
|
||||
// `scheme:/path` (RFC 8252 private-use scheme): everything before the first ':'.
|
||||
val scheme = redirectUri.substringBefore(":")
|
||||
val contextProvider = PresentationContextProvider()
|
||||
|
||||
val session = ASWebAuthenticationSession(
|
||||
|
||||
Reference in New Issue
Block a user