Я пытаюсь реализовать вход в 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 в мой собственный код реакции?