文字っぽいの。

文字を書いています。写真も混ざります。

Xcode12.5でビルドするとASWebAuthenticationSessionがエラーで開かない問題の対処法。

エラー内容

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を渡しましょう。