回调 URL 未调用 completionHandler
Callback URL not calling completionHandler
我正在尝试使用 ASWebAuthentication 来促进 Oauth 1.0 的身份验证过程。之后
用户输入他们的凭据并批准我的申请,oauth 提供者使用我传入的 redirect_url,com.me.appName:/returnToApp
Safari window 看起来像这样:
这是我的代码:
func getAuthTokenWithWebLogin(context: ASWebAuthenticationPresentationContextProviding) {
let callbackUrlScheme = “scheme:/returnToApp"
let authURL = URL(string: Constants.authURL)
guard authURL != nil else{return}
let webAuthSession = ASWebAuthenticationSession.init(url: authURL!, callbackURLScheme: callbackUrlScheme, completionHandler: { (callBack:URL?, error:Error?) in
// handle auth response
guard error == nil, let successURL = callBack else {
return
}
let oauthToken = NSURLComponents(string: (successURL.absoluteString))?.queryItems?.filter({[=11=].name == "code"}).first
// Do what you now that you've got the token, or use the callBack URL
print(oauthToken ?? "No OAuth Token")
})
// New in iOS 13
webAuthSession.presentationContextProvider = context
// Kick it off
webAuthSession.start()
}
我认为这不是 ASWebAuthentication 的问题,因为我在尝试使用第三方库 OauthSwift 时遇到了同样的问题
我的错;我没有意识到 callbackURL 必须是 myApp:// 格式,而我的格式是 myApp:/(单斜杠),我认为这也可以。
我正在尝试使用 ASWebAuthentication 来促进 Oauth 1.0 的身份验证过程。之后 用户输入他们的凭据并批准我的申请,oauth 提供者使用我传入的 redirect_url,com.me.appName:/returnToApp Safari window 看起来像这样:
这是我的代码:
func getAuthTokenWithWebLogin(context: ASWebAuthenticationPresentationContextProviding) {
let callbackUrlScheme = “scheme:/returnToApp"
let authURL = URL(string: Constants.authURL)
guard authURL != nil else{return}
let webAuthSession = ASWebAuthenticationSession.init(url: authURL!, callbackURLScheme: callbackUrlScheme, completionHandler: { (callBack:URL?, error:Error?) in
// handle auth response
guard error == nil, let successURL = callBack else {
return
}
let oauthToken = NSURLComponents(string: (successURL.absoluteString))?.queryItems?.filter({[=11=].name == "code"}).first
// Do what you now that you've got the token, or use the callBack URL
print(oauthToken ?? "No OAuth Token")
})
// New in iOS 13
webAuthSession.presentationContextProvider = context
// Kick it off
webAuthSession.start()
}
我认为这不是 ASWebAuthentication 的问题,因为我在尝试使用第三方库 OauthSwift 时遇到了同样的问题
我的错;我没有意识到 callbackURL 必须是 myApp:// 格式,而我的格式是 myApp:/(单斜杠),我认为这也可以。