エラー内容
Error: The provided scheme is not valid. A scheme must not include any special characters, such as ":" or "/"
起こること
Xcode12.4以前ではこのエラーが出つつもASWebAuthenticationSessionの画面が表示されたが、Xcode12.5ではなにも表示されない。
対処法
エラーの内容通りに対応すれば良い。ASWebAuthenticationSessionに渡す callbackURLScheme
から特殊文字を省く。
自分が実装した例だと、ASWebAuthenticationSessionの callbackURLScheme
に、callbackURLをそのまま渡してしまっていた。
let callbackURL = "callback-scheme://oauth/callback" let session = ASWebAuthenticationSession(url: url, callbackURLScheme: callbackURL) { ... }
このように、OAuthの処理時に利用するcallbackURLをそのまま渡していた。これだと :
や /
が含まれてしまうので、エラー通りにnot validである。下記のように変更すれば良い。
let callbackURL = URL(string: "callback-scheme://oauth/callback")! let callbackURLScheme = callbackURL.scheme! let session = ASWebAuthenticationSession(url: url, callbackURLScheme: callbackURLScheme) { ... }
この変更によって、無事にXcode12.5でも ASWebAuthenticationSession
が表示された。
まとめ
callbackURLScheme
だって言ってるのでちゃんとURL Schemeを渡しましょう。