Не удается использовать ASWebAuthenticationSession для подключения к учетной записи Strava - PullRequest
0 голосов
/ 26 апреля 2019

У меня проблемы с использованием нового класса 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, но ничего не помогло.

enter image description here

1 Ответ

0 голосов
/ 29 апреля 2019

Потому что я был уверен, что мой код был верным.Я проверил это, открыв Safari и введя свою собственную схему URL, которая используется в качестве схемы URL обратного вызова.Было показано приглашение - поэтому я знал, что настраиваемая схема URL-адреса настроена правильно.

Теперь я попытался очистить кэш Safari, и это, похоже, решило проблему.

Теперь после нажатия кнопкикнопку Авторизовать, мое приложение будет вновь открыто.

...