React Native Expo AuthSession с использованием аутентификации Azure не работает на AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 React Native Expo AuthSession с использованием аутентификации Azure не работает на Android

Сообщение Anonymous »

Я пытаюсь реализовать аутентификацию 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»