Не удается использовать ASWebAuthenticationSession для подключения к учетной записи Strava
У меня проблемы с использованием нового класса 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 stackru...
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-адреса обратного вызова.
Когда я вызываю функцию authenticate (), появляется диалоговое окно и открывается сайт Strava. Когда я нажимаю "Авторизовать", завершение Handler не вызывается (он вызывается только тогда, когда я нажимаю Отмена).
Должен ли я добавить что-то другое? Действительны ли мои обратные ссылки? Я попробовал несколько комбинаций схемы URL обратного вызова и моего URL обратного вызова, который установлен в Strava, но ничего не получалось.
1 ответ
Потому что я был уверен, что мой код был верным. Я проверил это, открыв Safari и введя свою собственную схему URL, которая используется в качестве схемы URL обратного вызова. Было показано приглашение - поэтому я знал, что настраиваемая схема URL настроена правильно.
Теперь я попытался очистить кэш Safari, и это, похоже, решило проблему.
Теперь, после того как я нажму кнопку "Авторизовать", мое приложение будет снова открыто.