Top.Mail.Ru
Как установить VK ID SDK для iOS | VK ID - сервис авторизации
VK ID auth service logo

Как установить VK ID SDK для iOS

Документация актуальна для версии VK ID SDK — 2.7.1.Пример с демо авторизации доступен по ссылке https://github.com/VKCOM/vkid-ios-sdk/.
VK ID SDK соответствует требованиям Apple и содержит файл манифеста PrivacyInfo.xcprivacy с описанием того, какие пользовательские данные использует SDK. Все запросы SDK сопровождаются SSL-сертификатом. Если для разработки и анализа сетевого трафика вы используете снифферы, то для корректной работы добавьте в исключения хост: *.vk.ru. Перед началом работы создайте приложение в кабинете сервиса авторизации VK ID, если не сделали этого ранее. В ходе настройки VK ID SDK вам понадобятся:
  • ID созданного приложения (client_id), который является идентификатором приложения и генерируется при его создании;
  • защищенный ключ (client_secret), который также генерируется при создании приложения.
Если у вас уже установлен SDK и вы хотите обновить его, перейдите в раздел Миграция.

Общие требования

  • iOS12.0 и выше;
  • Swift5.9 и выше;
  • Xcode15.2 и выше.
Если вы используете в качестве менеджера зависимостей Swift Package Manager, убедитесь, что ваша версия Xcode15.3 и выше.

Установка VK ID SDK

Установите VK ID SDK удобным способом:
  • Swift Package Manager;
  • CocoaPods.

Swift Package Manager

Чтобы установить VK ID SDK, добавьте в ваш Package.swift код из примера ниже. Пример кода
dependencies: [
    .package(url: "https://github.com/VKCOM/vkid-ios-sdk.git", .upToNextMajor(from: "2.7.1"))
]

CocoaPods

Чтобы установить VK ID SDK, добавьте в ваш Podfile код из примера ниже. Пример кода
pod 'VKID', '~> 2.3'
После этого установите зависимости:
pod install --repo-update

Начало интеграции

Настройка Info.plist

Чтобы пользователь с активной сессией в приложении VK мог быстро авторизоваться в сервисе с интегрированным VK ID без повторного ввода данных, SDK взаимодействует с клиентом ВКонтакте или другим официальным приложением VK на устройстве пользователя. Приложение VK выступает провайдером авторизации.
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>vkauthorize-silent</string>
</array>
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>auth_callback</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>vk123456</string> // Вместо 123456 подставьте ID вашего приложения.
        </array>
    </dict>
</array>
VK ID SDK взаимодействует с провайдерами авторизации через Universal links. При настройке приложения в кабинете сервиса авторизации VK ID укажите Universal link, по которой провайдер авторизации откроет ваше приложение. Добавьте поддержку Universal links в приложение.

Инициализация SDK

Взаимодействие с VK ID SDK происходит через объект VKID. SDK предоставляет shared-объект. Перед использованием объекта сконфигурируйте его — это можно сделать, например, при запуске приложения. Чтобы сконфигурировать SDK, воспользуйтесь кодом из примера ниже. Пример кода
import VKID

do {
    try VKID.shared.set(
        config: Configuration(
            appCredentials: AppCredentials(
                clientId: clientId,         // ID вашего приложения.
                clientSecret: clientSecret  // ваш защищенный ключ (client_secret).
            ),
            loggingEnabled: false // Включите логи для отладки.
        )
    )
} catch {
    preconditionFailure("Failed to initialize VKID: \(error)")
}

Настройка локали UI-компонентов

Вы можете настроить язык для текстов UI-компонентов с помощью локали.
// Настройка при инициализации SDK.
let vkid = try VKID.shared.set(
    config: Configuration(
        appCredentials: AppCredentials(
            clientId: clientId,
            clientSecret: clientSecret
        ),
        appearance: .init(
            locale: .ru
        )
    )
)

// Настройка после инициализации SDK: вы можете сменить локаль на другую.
VKID.shared.appearance.locale = .en
Поддержите открытие ссылки при возврате в ваше приложение из провайдера авторизации. Для этого в AppDelegate внесите изменения:
func application(
    _ app: UIApplication,
    open url: URL,
    options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
    return VKID.shared.open(url: url)
}

Работа с UIScene

Если ваше приложение использует UIScene, то реализуйте следующий метод из UISceneDelegate:
func scene(
    _ scene: UIScene,
    openURLContexts URLContexts: Set<UIOpenURLContext>
) {
    URLContexts.forEach { ctx in
        VKID.shared.open(url: ctx.url)
    }
}

Работа с SwiftUI

Если вы используете SwiftUI, то реализуйте onOpenURL:
var body: some Scene {
    WindowGroup {
        ContentView()
            .onOpenURL { url in
                _ = VKID.shared..open(url: url)
            }
    }
}

Дальнейшие шаги

Также вы можете ознакомиться с кодом VK ID SDK в нашем проекте на GitHub.