5

を使用して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 でハンドラーを完了しますか?

4

0 に答える 0