# πŸ” Настройка OAuth ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² ## 🎯 Быстрая настройка для ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ### 1. Google OAuth 1. ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² [Google Cloud Console](https://console.cloud.google.com/) 2. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ 3. **APIs & Services** β†’ **Credentials** β†’ **Create Credentials** β†’ **OAuth 2.0 Client ID** 4. **Application type**: Web application 5. **Authorized redirect URIs**: - `https://v3.dscrs.site/oauth/google/callback` - `http://localhost:3000/oauth/google/callback` (для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ) 6. Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ **Client ID** ΠΈ **Client Secret** **ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния:** ```bash GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret ``` ### 2. GitHub OAuth 1. ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² [GitHub Developer Settings](https://github.com/settings/developers) 2. **New OAuth App** 3. **Authorization callback URL**: `https://v3.dscrs.site/oauth/github/callback` 4. Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ **Client ID** ΠΈ **Client Secret** **ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния:** ```bash GITHUB_CLIENT_ID=your_github_client_id GITHUB_CLIENT_SECRET=your_github_client_secret ``` ### 3. VK OAuth 1. ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² [VK Developers](https://dev.vk.com/apps) 2. **Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅** β†’ **Π’Π΅Π±-сайт** 3. **Настройки** β†’ **Redirect URI**: `https://v3.dscrs.site/oauth/vk/callback` 4. Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ **ID прилоТСния** ΠΈ **Π—Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡** **ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния:** ```bash VK_CLIENT_ID=your_vk_app_id VK_CLIENT_SECRET=your_vk_secure_key ``` ### 4. Facebook OAuth 1. ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² [Facebook Developers](https://developers.facebook.com/) 2. **My Apps** β†’ **Create App** β†’ **Consumer** 3. **Facebook Login** β†’ **Settings** 4. **Valid OAuth Redirect URIs**: `https://v3.dscrs.site/oauth/facebook/callback` 5. Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ **App ID** ΠΈ **App Secret** **ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния:** ```bash FACEBOOK_CLIENT_ID=your_facebook_app_id FACEBOOK_CLIENT_SECRET=your_facebook_app_secret ``` ### 5. Yandex OAuth 1. ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² [Yandex OAuth](https://oauth.yandex.ru/) 2. **Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅** 3. **Callback URI**: `https://v3.dscrs.site/oauth/yandex/callback` 4. **ΠŸΡ€Π°Π²Π°**: `login:info`, `login:email`, `login:avatar` 5. Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ **ID** ΠΈ **ΠŸΠ°Ρ€ΠΎΠ»ΡŒ** **ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния:** ```bash YANDEX_CLIENT_ID=your_yandex_client_id YANDEX_CLIENT_SECRET=your_yandex_client_secret ``` ## πŸš€ Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ### Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ```bash # .env Ρ„Π°ΠΉΠ» GOOGLE_CLIENT_ID=... GOOGLE_CLIENT_SECRET=... GITHUB_CLIENT_ID=... GITHUB_CLIENT_SECRET=... # ΠΈ Ρ‚.Π΄. ``` ### ΠŸΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ (Dokku/Heroku) ```bash # Установка ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния dokku config:set myapp GOOGLE_CLIENT_ID=xxx GOOGLE_CLIENT_SECRET=yyy # ΠΈΠ»ΠΈ heroku config:set GOOGLE_CLIENT_ID=xxx GOOGLE_CLIENT_SECRET=yyy ``` ## βœ… ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° настройки 1. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈ: `OAuth provider google: id=SET, key=SET` 3. ВСстовый Π²Ρ…ΠΎΠ΄: `https://v3.dscrs.site/oauth/google` ## πŸ” Диагностика ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ **Ошибка "Provider not configured":** - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния - Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ значСния Π½Π΅ пустыС - ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ **Ошибка redirect_uri_mismatch:** - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ соотвСтствиС URL Π² настройках ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° - Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» (http/https) совпадаСт **VK ошибка "Code challenge method is unsupported":** - Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, VK Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ PKCE - БистСма автоматичСски ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ это ## πŸ“ž ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ: 1. Π›ΠΎΠ³ΠΈ прилоТСния ΠΏΡ€ΠΈ запускС 2. Настройки redirect URI Ρƒ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° 3. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния