Swift - Не удается завершить BackgroundTask и API Twitter - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь что-то написать в своем приложении. Но я получаю сообщение об ошибке, если я покидаю свое приложение, чтобы открыть oAuth-процесс Twitter. Я могу авторизовать свое приложение через Twitter и открыть свое приложение после этой авторизации, но withCallbackURL не вызывается. Надеюсь, кто-нибудь может мне помочь

Я получаю эту ошибку:

Can't end BackgroundTask: no background task exists with identifier 2 (0x2), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug.

Я использую библиотеку OAuthSwift .

Я добавил это в AppDelegateкласс:

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url else {
        return
    }
    if (url.host == "howDoYouFeel://") {
        OAuthSwift.handle(url: url)
    }

}

И это для моего ViewController:

var oauthswift: OAuth1Swift!
var handle: OAuthSwiftRequestHandle!
var newOAuthToken: String!

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        view.backgroundColor = .white

        oauthswift = OAuth1Swift(
            consumerKey:    "123",
            consumerSecret: "456",
            requestTokenUrl: "https://api.twitter.com/oauth/request_token",
            authorizeUrl:    "https://api.twitter.com/oauth/authorize",
            accessTokenUrl:  "https://api.twitter.com/oauth/access_token"
        )

        // authorize
        handle = oauthswift.authorize(
            withCallbackURL: URL(string: "howDoYouFeel://")!) { result in
                print("result \(result)")
            switch result {
            case .success(let (credential, response, parameters)):
              print("success")
            print(credential.oauthToken)
              print(credential.oauthTokenSecret)
              print(parameters["user_id"])
              // Do your request
            case .failure(let error):
                print("error")
              print(error.localizedDescription)
            }
        }
    }
...