Я пытаюсь реализовать аутентификацию 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
React Native Expo AuthSession с использованием аутентификации Azure не работает на Android ⇐ Android
Форум для тех, кто программирует под Android
1737433711
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.
Подробнее здесь: [url]https://stackoverflow.com/questions/79371275/react-native-expo-authsession-using-azure-authentication-not-working-on-android[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия