Я пытаюсь реализовать аутентификацию Azure с помощью Expo AuthSession в React Native Expo согласно документации https://docs.expo.dev/guides/authentication/#azure.
Это Azure Процесс аутентификации работал нормально на IOS и, таким образом, автоматически генерировал токен доступа, закрывающий браузер, тогда как на Android он не работает. Он не генерировал токен доступа и не закрывал браузер.
Вот рабочие снимки экрана приложения IOS.
Страница iOS перед аутентификацией
Процесс аутентификации IOS Azure
Успешная аутентификация IOS Azure с помощью токена
Это не рабочие снимки экрана приложения Android.
Страница Android перед аутентификацией
Android Azure Процесс аутентификации
Фрагмент кода для Azure Expo AuthSession
import { useState } from 'react';
import * as WebBrowser from 'expo-web-browser';
import {
exchangeCodeAsync,
makeRedirectUri,
useAuthRequest,
useAutoDiscovery,
} from 'expo-auth-session';
import { Button, Text, SafeAreaView, Platform } from 'react-native';
WebBrowser.maybeCompleteAuthSession();
export default function App() {
// Endpoint
const discovery = useAutoDiscovery(
'https://login.microsoftonline.com//v2.0',
);
const redirectUri = makeRedirectUri({
native: Platform.OS === 'ios' ? "msauth.com.myorg.myauthapp://auth" : "msauth://com.myorg.myauthapp/GTEWOFHNVBCDAPDICYVBSQTY%2B",
});
const clientId = '';
// We store the JWT in here
const [token, setToken] = useState(null);
// Request
const [request, , promptAsync] = useAuthRequest(
{
clientId,
scopes: ['openid', 'profile', 'email', 'offline_access'],
redirectUri,
},
discovery,
);
return (
{
promptAsync().then((codeResponse) => {
if (request && codeResponse?.type === 'success' && discovery) {
exchangeCodeAsync(
{
clientId,
code: codeResponse.params.code,
extraParams: request.codeVerifier
? { code_verifier: request.codeVerifier }
: undefined,
redirectUri,
},
discovery,
).then((res) => {
setToken(res.accessToken);
});
}
});
}}
/>
{token}
);
}
Я пытался реализовать это с помощью функции WebBrowser.openAuthSessionAsync() expo-web-browser, но в итоге получил ту же проблему.
Также я пытался изменить файл android/app/src/AndroidManifest.xml согласно этому сообщению
экспо-аутентификация не закрывается при получении перенаправления на Android, но все равно безуспешно.
Я проверял это на устройствах со сборками Expo Development для Android.
Подробнее здесь: https://stackoverflow.com/questions/793 ... on-android