У меня проблемы с использованием нового класса ASWebAuthenticationSession, который используется для процесса OAuth2 в приложениях iOS.
Я хочу использовать этот класс для подключения моего приложения к моей учетной записи Strava.У меня есть следующий код:
class AuthController
{
private var authSession: ASWebAuthenticationSession?
func authenticate()
{
let string = self.createWebAuthUrl()
guard let url = URL(string: string) else { return }
self.authSession = ASWebAuthenticationSession(url: url, callbackURLScheme: "MaccaStravaWebAuth://", completionHandler:
{
url, error in
})
self.authSession?.start()
}
fileprivate func createWebAuthUrl() -> String
{
var url = String.empty
url.append("https://www.strava.com/oauth/mobile/authorize")
url.append("?client_id=000000") // Removed for stackoverflow...
url.append("&redirect_uri=MaccaStravaWebAuth://test.com")
url.append("&response_type=code")
url.append("&approval_prompt=force")
url.append("&grant_type=authorization_code")
url.append("&scope=activity:write,activity:read_all")
return url
}
}
Я добавил собственную схему URL в мой файл info.plist.Я изменил URL-адрес обратного вызова в примере кода на «test.com», но на самом деле это тот же URL-адрес, который также используется в моих настройках приложения Strava в качестве URL-адреса обратного вызова.
Когда я вызываю функцию аутентификации(), появляется диалоговое окно и открывается сайт Strava.Когда я нажимаю «Авторизовать», завершениеHandler не вызывается (он вызывается только когда я нажимаю Отмена).
Нужно ли добавлять что-то другое?Действительны ли мои обратные ссылки?Я пробовал несколько комбинаций схемы URL-адреса обратного вызова и моего URL-адреса обратного вызова, установленного в Strava, но ничего не помогло.