Невозможно вернуть управление из веб-представления, чтобы реагировать на собственное приложение в потоке OAuth

Я пытаюсь реализовать вход в Google OAuth 2 с помощью response-native-app-auth в моем родном приложении для Android, как показано ниже:

  googleLoginPressed = async () => {
    const config = {
      serviceConfiguration: {
        authorizationEndpoint: 'https://accounts.google.com/o/oauth2/v2/auth', tokenEndpoint: 'https://accounts.google.com/o/oauth2/v2/auth', 
      },
      clientId: app_params.GOOGLE_CLIENT_ID, redirectUrl: 'https://<my_domain>/oauth/google',
      scopes: ['openid', 'profile', 'email'], additionalParameters: { 'response-type': 'code' },
    };
    try {
      const result = await authorize(config);
    } catch (error) {
      console.log(error);
    }
  }

Это вызывает веб-представление со страницей входа в Google, и я могу успешно пройти аутентификацию. Затем Google правильно перенаправляет на мою конечную точку обратного вызова oauth и заполняет oauth code в URL-адресе перенаправления, как и должно. На этом этапе я ожидаю, что react-native-app-auth вернет управление из веб-просмотра в приложение. Вместо этого веб-представление остается открытым на странице URL-адреса перенаправления.

Я добавил необходимую конфигурацию ассоциации веб-сайтов в AndroidManifest.xml и следующий код в MainActivity.java, чтобы проверить возможность возврата элемента управления в приложение с URL-адреса перенаправления:

  @Override
  public void onNewIntent(Intent intent) { // this is not getting hit
    super.onNewIntent(intent);
    Uri appLinkData = intent.getData();

    if (appLinkData != null) {
      bar = appLinkData.getPath();
    }
  }

Что я пробовал до сих пор

  • Я убедился, что мое приложение может открываться Universal links. Итак, ассоциация веб-сайтов должна работать нормально.
  • Также пробовал реплицировать всю настройку на iOS. Тот же результат. Веб-просмотр показывает, что Google правильно перенаправляет на конечную точку oauth, но приложение не может вернуть управление.

Как мне вернуть управление из веб-представления oauth в мой собственный код реакции?


person Rakesh Singh    schedule 27.07.2020    source источник


Ответы (1)


Если вы используете Заявленные схемы HTTPS, которые являются наиболее рекомендуемым вариантом безопасности для мобильных приложений, вам, вероятно, также понадобится межстраничная страница после входа в систему, которая запускает универсальную ссылку.

В моем сообщении в блоге есть дополнительная информация и образец кода, который вы может работать, хотя он использует простой Kotlin, а не React Native.

person Gary Archer    schedule 29.07.2020