Flutter Custom Tabs - Firebase Auth с Microsoft Provider не перенаправляет обратно в приложениеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Flutter Custom Tabs - Firebase Auth с Microsoft Provider не перенаправляет обратно в приложение

Сообщение Anonymous »

У меня есть проблема, когда, если приложение (в режиме отладки) либо свежеприготовленное, либо недавно установлено. Если я попытаюсь войти в систему с моим поставщиком, он открывает внешний браузер (например, Chrome), и он не перенаправляет меня обратно в приложение, но если я вернусь к приложению, данные отражаются. Теперь вот еще одно странное поведение, если я снова запускаю приложение, теперь оно открывает Chrome Custom Tabs и правильно обрабатывает перенаправление. Обычно это происходит с подсказкой SELECT_ACCOUNT, в противном случае в подсказке для входа, это не так, и причина, по которой я выбрал SELECT_ACCOUNT, заключается в том, что я не даю приложению взять текущий сеанс, который вошел в браузер.

Код: Выделить всё

Future signInWithMicrosoft() async {
try {
final microsoftProvider = MicrosoftAuthProvider();
microsoftProvider.setCustomParameters({
'tenant': '',
'prompt': 'select_account'
});

final userCredential = await _auth.signInWithProvider(microsoftProvider);

if (userCredential.user != null) {
String? accessToken;
if (userCredential.credential != null) {

final oauthCredential = userCredential.credential as dynamic;
accessToken = oauthCredential.accessToken;

} else {
debugPrint("Usercredential is null");
}

// 1. Create user immediately without the photo URL. This is fast.
final user = await _createOrUpdateUser(
firebaseUser: userCredential.user!,
principalName: userCredential.additionalUserInfo?.profile?['upn'] as String?,
);

// 2. Fetch the photo in the background. Don't await it.
if (accessToken != null) {

_graphService.getProfilePhotoUrl(
accessToken: accessToken,
userId: userCredential.user!.uid,
).then((photoUrl) {
if (photoUrl != null) {
// 3. Once fetched, update the user's profile in the database.
_updateUserPhotoUrl(uid: userCredential.user!.uid, photoUrl: photoUrl);
}
}).catchError((e){
print('Failed to fetch and update profile photo in background: $e');
});
}

return user; // Return the user immediately.
}
return null;
} on FirebaseAuthException catch (e) {
if (e.code == 'web-context-cancelled') {
print('Microsoft sign in cancelled by user.');
return null;
}
rethrow;
} catch (e) {
throw Exception('Microsoft sign in failed: $e');
}
}

< /code>
 часть моего main.dart < /h1>
void main() async {
// Ensure Flutter bindings are initialized
WidgetsFlutterBinding.ensureInitialized();

await SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown
]);

if(Platform.isAndroid){
warmup_customtabs();
}
// Initialize Firebase
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);

// Wrap the entire app in a ProviderScope for Riverpod state management
runApp(const ProviderScope(child: MyApp()));
}
Future  warmup_customtabs() async{
try {
// Try the session-based warmup first (more thorough)
await warmupCustomTabs();
print('Custom tabs session warmup successful');
} catch (e) {
print('Custom tabs session warmup failed: $e');

}

}

фактически попыталась реализовать службу разминки (которая показана в коде выше) для пользовательских вкладок, но безрезультатно, это все еще происходит.


Подробнее здесь: https://stackoverflow.com/questions/797 ... direct-bac
Ответить

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

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

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

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

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