VKCOM / vk-ios-sdk

iOS library for working with VK API, authorization through VK app, using VK functions
MIT License
298 stars 164 forks source link

При авторизации приложения ничего не происходит #592

Open MrWoWander opened 2 years ago

MrWoWander commented 2 years ago

После того, как я ввел логин и пароль от аккаунта, дал своему аккаунту доступ к приложению, в браузере просто белый экран, и больше ничего не происходит. Ожидаю просто автоматическое закрытие браузера и уже выполнения логики, прописанная в vkSdkAccessAuthorizationFinished.

func vkSdkAccessAuthorizationFinished(with result: VKAuthorizationResult!) {
        if result.token != nil {
            // дальнейший код
        }
    }

Сейчас данный метод отрабатывает только при нажатии кнопки Done в браузере, что подразумевает ручное закрытие браузера, НО при этом никакие данные не сохраняются, тем самым result.token == nil

Браузер открыт через present() внутри приложения (SFSafariViewController) Удалось скопировать ссылку (https://oauth.vk.com/auth_redirect?app_id=... - полную ссылку понятное дело не покажу, но там идет информация о пользователе и токен).

В Info.plist все прописано:

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>vk{ID моего приложения}</string>
            </array>
        </dict>
    </array>

Кто может помочь с решением проблемы? (постарался посмотреть предыдущие issues - решения не нашел)

MrWoWander commented 2 years ago

Пока решил эту проблему, используя не SFSafariViewController, а именно WebView, но если кто то знает, как это сделать через SFSafariViewController - ответьте пожалуйста

P.S. Чтобы запустить авторизацию в режиме WebView нужно передайть в authorize() второй параметр:

VKSdk.authorize(scope, with: VKAuthorizationOptions.init(rawValue: 2))
ananevam commented 2 years ago

что бы браузер закрывался автоматически, а не через Done, мне помогло вот это https://github.com/VKCOM/vk-ios-sdk/issues/525#issuecomment-635903684