https://orlinskas.github.io/mobile_auth_redirect_test/
Статический веб-сайт, размещенный на GitHub Pages, предназначенный для тестирования Android App Links и iOS Universal Links. Этот тестовый провайдер авторизации имитирует процесс входа и перенаправляет пользователей обратно в ваше мобильное приложение с использованием глубоких ссылок.
После развертывания, доступ к вашему тестовому провайдеру авторизации по адресу:
https://<your-username>.github.io/mobile_auth_redirect_test/
mobile_auth_redirect_test/
├── index.html # Главная страница входа с кнопкой авторизации
├── callback.html # Страница обратного вызова (имитирует редирект)
├── .well-known/
│ ├── assetlinks.json # Конфигурация Android Digital Asset Links
│ └── apple-app-site-association # Конфигурация iOS Universal Links
├── .nojekyll # Обеспечивает корректную отдачу папки .well-known
└── README.md # Этот файл
-
Сгенерируйте SHA-256 отпечаток:
# Для debug keystore keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android # Для release keystore keytool -list -v -keystore /path/to/your/release.keystore -alias your-key-alias
-
Обновите
.well-known/assetlinks.json:[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.yourcompany.yourapp", "sha256_cert_fingerprints": [ "YOUR_DEBUG_SHA256_FINGERPRINT", "YOUR_RELEASE_SHA256_FINGERPRINT" ] } } ] -
В
AndroidManifest.xmlвашего Android приложения:<activity android:name=".MainActivity"> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" android:host="<your-username>.github.io" android:pathPrefix="/mobile_auth_redirect_test/callback" /> </intent-filter> </activity>
-
Получите ваш Team ID:
- Войдите в Apple Developer Portal
- Ваш Team ID отображается в правом верхнем углу страницы Membership
-
Обновите
.well-known/apple-app-site-association:{ "applinks": { "apps": [], "details": [ { "appID": "YOUR_TEAM_ID.com.yourcompany.yourapp", "paths": [ "/mobile_auth_redirect_test/*", "/callback" ] } ] } } -
В Xcode проекте вашего iOS приложения:
- Перейдите в Signing & Capabilities
- Добавьте возможность Associated Domains
- Добавьте домен:
applinks:<your-username>.github.io
-
Обработайте Universal Links в вашем приложении:
// В вашем AppDelegate или SceneDelegate func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL else { return false } // Обработайте URL print("Received Universal Link: \(url)") // Извлеките параметры token и status return true }
- Перейдите на GitHub и создайте новый репозиторий с именем
mobile_auth_redirect_test - Сделайте его публичным (требуется для GitHub Pages на бесплатных аккаунтах)
# Инициализируйте git репозиторий (если еще не сделано)
git init
# Добавьте все файлы
git add .
# Сделайте коммит
git commit -m "Initial commit: Mock auth provider for mobile app testing"
# Добавьте remote (замените <your-username> на ваше имя пользователя GitHub)
git remote add origin https://github.com/<your-username>/mobile_auth_redirect_test.git
# Отправьте на GitHub
git branch -M main
git push -u origin main- Перейдите в ваш репозиторий на GitHub
- Нажмите Settings → Pages
- В разделе Source выберите ветку
mainи папку/ (root) - Нажмите Save
- Ваш сайт будет опубликован по адресу:
https://<your-username>.github.io/mobile_auth_redirect_test/
После развертывания проверьте доступность следующих URL:
Android:
https://<your-username>.github.io/mobile_auth_redirect_test/.well-known/assetlinks.json
iOS:
https://<your-username>.github.io/mobile_auth_redirect_test/.well-known/apple-app-site-association
- Установите ваше приложение на Android устройство (рекомендуется физическое устройство)
- Проверьте верификацию App Link:
# Проверьте, верифицированы ли App Links adb shell pm get-app-links com.yourcompany.yourapp - Откройте URL в Chrome или отправьте через SMS/Email:
https://<your-username>.github.io/mobile_auth_redirect_test/ - Нажмите "Authorize and Return to App"
- Ваше приложение должно открыться автоматически с callback URL
- Установите ваше приложение на iOS устройство (требуется физическое устройство - симулятор не полностью поддерживает Universal Links)
- Протестируйте Universal Link:
- Отправьте себе URL через Сообщения, Email или Заметки
- Важно: Не тестируйте вставкой в Safari - это не активирует Universal Links
- Нажмите на ссылку в Сообщениях/Email/Заметках
- Ваше приложение должно открыться автоматически
Android:
# Просмотр логов для App Links
adb logcat | grep -i "AppLinks"
# Ручная верификация домена
adb shell pm verify-app-links --re-verify com.yourcompany.yourappiOS:
# Тестирование AASA файла локально (macOS)
curl -i https://<your-username>.github.io/.well-known/apple-app-site-association
# Проверка валидности JSON
curl https://<your-username>.github.io/.well-known/apple-app-site-association | python -m json.tool- Пользователь открывает тестовый провайдер авторизации в мобильном браузере
- Пользователь нажимает кнопку "Authorize and Return to App"
- JavaScript перенаправляет используя
window.location.hrefна callback URL:https://<your-username>.github.io/mobile_auth_redirect_test/callback?token=mock_token_2026&status=success - Мобильная ОС перехватывает URL, если ваше приложение установлено и правильно настроено
- Приложение открывается и получает URL с параметрами авторизации
GitHub Pages по умолчанию использует Jekyll, который игнорирует папки, начинающиеся с точки (например, .well-known). Файл .nojekyll в корне отключает обработку Jekyll, обеспечивая корректную отдачу вашей папки .well-known.
Перенаправление ДОЛЖНО быть запущено пользовательским действием (нажатием кнопки) с использованием window.location.href. Мобильные браузеры требуют этого для активации глубоких ссылок по соображениям безопасности.
И Android App Links, и iOS Universal Links требуют HTTPS. GitHub Pages предоставляет это автоматически.
- Android требует, чтобы
assetlinks.jsonотдавался какapplication/json - iOS требует, чтобы
apple-app-site-associationотдавался какapplication/json(без расширения.json) - GitHub Pages обрабатывает это автоматически
| Проблема | Решение |
|---|---|
Файлы .well-known возвращают 404 |
Убедитесь, что файл .nojekyll существует в корне |
| Приложение не открывается на Android | Проверьте, что SHA-256 отпечаток совпадает с вашим keystore |
| Приложение не открывается на iOS | Тестируйте нажатием на ссылки в Сообщениях, а не в адресной строке Safari |
| Universal Links не работают | Проверьте, что Associated Domains в Xcode включает префикс applinks: |
| Digital Asset Links не работают | Проверьте, что package_name точно совпадает с пакетом вашего приложения |