Есть ли проблемы с настройкой OAuth для Yandex в Appwrite?

Добрый день! Я пытаюсь интегрировать авторизацию через Яндекс. У меня есть работающая система, но я сталкиваюсь с проблемой "Приложение не установлено" и не знаю, как реализовать редирект назад в приложение. Я уже потратил два дня, пытаясь найти решение. 

Генерация кода, которую предоставил GPT, включает использование ссылок <a>appname://success</a> и так далее, но это вызывает ошибку 400. 

Вот мой код:

<pre><code class="xml">&lt;activity
            android:name=".user.TestActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:theme="@style/Theme.Irminsule"&gt;

            &lt;intent-filter&gt;
                &lt;action android:name="android.intent.action.MAIN" /&gt;
                &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
            &lt;/intent-filter&gt;

            &lt;intent-filter&gt;
                &lt;action android:name="android.intent.action.VIEW" /&gt;

                &lt;category android:name="android.intent.category.DEFAULT" /&gt;
                &lt;category android:name="android.intent.category.BROWSABLE" /&gt;

                &lt;data
                    android:scheme="https"
                    android:host="cloud.appwrite.io"
                    android:pathPrefix="/v1/account/sessions/oauth2/callback/yandex/67b693810011e520cf60" /&gt;
            &lt;/intent-filter&gt;

        &lt;/activity&gt;</code></pre>

<pre><code>class TestActivity : ComponentActivity() {
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        intent.data?.let { uri -&gt;
            if (uri.scheme == "https" &amp;&amp; uri.host == "cloud.appwrite.io" &amp;&amp; uri.path?.s...
  • 24 февраля 2025 г. 7:14
Ответы на вопрос 2
Проблема, с которой вы сталкиваетесь, связана с настройкой схемы для редиректа после успешной авторизации через OAuth в Yandex. Ошибка "Приложение не установлено" может возникнуть, если у вас не настроены корректно `intent-filter` для обработки редиректов.

Давайте рассмотрим основные моменты, которые нужно проверить:

### 1. Проверьте настройки в Яндексе

Убедитесь, что вы правильно настроили приложение в Яндекс. В разделе OAuth-авторизации укажите URL для редиректа. Он должен соответствовать тому, что вы определили в `intent-filter`. Например, если вы используете `https://cloud.appwrite.io/v1/account/sessions/oauth2/callback/yandex/67b693810011e520cf60`, убедитесь, что этот URL корректно указан в настройках вашего приложения на Яндексе.

### 2. Проверьте `intent-filter`

Убедитесь, что `intent-filter` настроен правильно. В данный момент у вас указана схема `https`. Если ваше приложение должно обрабатывать определённые URL-схемы (например, `appname://`), то вам нужно настроить это также:

```xml
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="appname" />
</intent-filter>
```

Или, если хотите использовать `https`, убедитесь, что URL-адрес правильно настроен:

```xml
<data android:scheme="https"
      android:host="cloud.appwrite.io"
      android:pathPrefix="/v1/account/sessions/oauth2/callback/yandex/67b693810011e520cf60" />
```

### 3. Обработчик редиректа в `TestActivity`

В вашем методе `onNewIntent` убедитесь, что вы правильно обрабатываете URI. Вот пример, как это может выглядеть:

```kotlin
class TestActivity : ComponentActivity() {
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        intent.data?.let { uri ->
            if (uri.scheme == "https" && uri.host == "cloud.appwrite.io" && uri.path?.startsWith("/v1/account/sessions/oauth2/callback/yandex/") == true) {
                // Здесь обработайте успешный редирект
                // Получите необходимые параметры и выполните необходимые действия
            }
        }
    }
}
```

### 4. Проверьте, не блокирует ли браузер редирект

Если вы открываете ссылку через браузер, убедитесь, что браузер не блокирует переходы на ваши кастомные схемы (или `https` URL). Также проверьте консоль разработчика браузера на наличие возможных ошибок.

### 5. Логи и отладка

Запустите приложение в режиме отладки и проверьте логи. Возможно, вы увидите дополнительные подсказки о том, почему возникает ошибка.

Если вы проверите все вышеперечисленное и всё будет настроено правильно, ваша система должна успешно обрабатывать редиректы после авторизации.
Здравствуйте! Я из Яндекса. Для более детального рассмотрения вашего вопроса обратитесь, пожалуйста, в нашу службу поддержки через сайт или почту — cloud@support.yandex.ru. Мы в индивидуальном порядке проверим ваши данные и постараемся разобраться в ситуации.
Похожие вопросы