Как получить код авторизации, используя ASWebAuthenticationSession? - PullRequest
1 голос
/ 25 февраля 2020

Я пытаюсь получить код авторизации из конечной точки OAuth Stripe с использованием ASWebAuthenticationSession - это событие происходит после вызова URL перенаправления моего Stripe.

К сожалению, обработчик завершения authSession не перезванивает с callbackURL. И мне нужен этот callbackURL для запроса кода авторизации. Я читал разные статьи на эту тему c, но не могу понять, почему моя реализация не работает так, как я ожидаю.

Вот мой код:


class CreateStripeConnectAccountController: UIViewController {

  var authSession: ASWebAuthenticationSession!

  override func viewDidLoad() {
      super.viewDidLoad()
      configureAuthSession()
  }

  private func configureAuthSession() {

    let urlString = Constants.URLs.stripeConnectOAuth // Sample URL

    guard let url = URL(string: urlString) else { return }

    let callbackScheme = "myapp:auth"    

    authSession = ASWebAuthenticationSession(url: url, callbackURLScheme: callbackScheme, completionHandler: { (callbackURL, error) in
       guard error == nil, let successURL = callbackURL else {
          print("Nothing")
          return
       }

       let oauthToken = NSURLComponents(string: (successURL.absoluteString))?.queryItems?.filter({$0.name == "code"}).first

       print(successURL.absoluteString)
    })

    authSession.presentationContextProvider = self
    authSession.start()
  }
}

extension CreateStripeConnectAccountController: ASWebAuthenticationPresentationContextProviding {
    func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor {
        self.view.window ?? ASPresentationAnchor()
    }
}

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Я знаю, что он старый, но все равно. Убедитесь, что callbackScheme и схема, используемая в redirect_uri, одинаковы.

0 голосов
/ 25 февраля 2020

Я считаю, что проблема в том, что вы даете nil за callbackURLScheme. Вам нужно указать схему URL, которая перенаправляет на ваше приложение:

См. Пример проверки подлинности Apple: https://developer.apple.com/documentation/authenticationservices/authenticating_a_user_through_a_web_service

А вот документы Apple о том, как создать пользовательский URL Схема для вашего приложения: https://developer.apple.com/documentation/uikit/inter-process_communication/allowing_apps_and_websites_to_link_to_your_content/defining_a_custom_url_scheme_for_your_app.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...