を使用してWebサービスを認証していますASWebAuthenticationSession
が、何らかの理由で最終リダイレクト後の唯一のオプションはCancelです。キャンセルを押しても、完了ハンドラーを介してコールバック Url が送信され、そこでトークンフォームを解析できました。しかし、今はエラーが発生しますASWebAuthenticationSessionErrorCodeCanceledLogin
。
[完了ASWebAuthenticationSession
] ボタンを表示し、ハンドラーをコールバック URL で完了するにはどうすればよいですか? 前回の iOS アップデートで何か変更または破損がありましたか?
セッションの作成方法
if (@available(iOS 12.0, *)) {
self.session = [[ASWebAuthenticationSession alloc]
initWithURL:@"http://service.com"
callbackURLScheme:@"http://website.com"
completionHandler:_sessionHandler];
[self.session start];
}
完了ハンドラ
_sessionHandler = ^(NSURL * _Nullable callbackURL, NSError * _Nullable error) {
NSLog(@"Callback Url: %@, Error: %@", callbackURL, error);
if ( callbackURL != nil ) {
__block NSString * token = [weakSelf webToken:@"token" fromUrl:callbackURL];
weakSelf.completionHandler([weakSelf parseWebToken:token], error);
}
else
weakSelf.completionHandler(nil, error);
};
出力
コールバック URL: (null)、エラー: エラー Domain=com.apple.AuthenticationServices.WebAuthenticationSession Code=1 "(null)"
前述したように、これは以前は機能していましたが、どこが壊れたのかわかりません。私が使用したテスト サービスは変更されていないため、フレームワークに含まれているのか、それとも他に何か不足しているのか疑問に思っています。
Web サービスは特定のヘッダーを最終 URL に送り返す必要があるのでASWebAuthenticationSession
、[完了] ボタンを表示し、URL でハンドラーを完了しますか?