Вход в Flutter с Apple не работает на AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Вход в Flutter с Apple не работает на Android

Сообщение Anonymous »

Я использую пакет «sign_in_with_apple» для входа с помощью Apple ID. В качестве бэкенда я использую FireBase. Мой код отлично работает на IOS, но на Android.
Я следил и просматривал это руководство на Medium, это руководство на странице Firebase и этот файл сведений о пакете.
Включил Apple SignIn для приложения в идентификаторе. Создан идентификатор службы. Создан ключ. Заполнил все на странице Firebase (Apple-Team-ID, Key-ID, Закрытый ключ). Заполняется как URL-адрес возврата «[FIREBASE_APPLE_SIGN_IN_RETURN_URL]» (предоставляется из FireBase).
На IOS все работает нормально, но это происходит, когда я пытаюсь войти в систему на эмуляторе Android:
  • Я нажимаю «Войти через Apple».
  • Я буду перенаправлен на Apple. (appleid.apple.com)
  • Я заполняю свой идентификатор и пароль и нажимаю «Далее».
  • Apple спрашивает меня, уверен ли я и хочу ли чтобы продолжить, я нажимаю «Продолжить».
  • Я получаю сообщение об ошибке:
Невозможно обработать запрос из-за отсутствия начального состояния. Это может
случиться, если хранилище сеанса браузера недоступно или случайно
очищено. Некоторые конкретные сценарии: 1) Использование SAML
SSO, инициированного IDP. 2) Использование SignInWithRedirect в среде браузера с разделенным хранилищем
.

Мой SignInCode:

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

/// Sign In With Apple
signInWithApple() async {
try {
String clientID = 'com.example-service'; /// same ID like in the service ID, com.example is a placeholder
String redirectURL = '[FIREBASE_APPLE_SIGN_IN_RETURN_URL]'; /// Here I have the URL and this is just a placeholder

/// Generates a Random String from 1-9 and A-Z characters.
final rawNonce = generateNonce();

/// We are convering that rawNonce into SHA256 for security purposes
/// In our login.
final nonce = sha256ofString(rawNonce);

final appleCredential = await SignInWithApple.getAppleIDCredential(
/// Scopes are the values that you are requiring from
/// Apple Server.
scopes: [
AppleIDAuthorizationScopes.email,
AppleIDAuthorizationScopes.fullName,
],
nonce: Platform.isIOS ? nonce : null,

/// We are providing Web Authentication for Android Login,
/// Android uses web browser based login for Apple.
webAuthenticationOptions: Platform.isIOS
? null
: WebAuthenticationOptions(
clientId: clientID,
redirectUri: Uri.parse(redirectURL),
),
);

final AuthCredential appleAuthCredential = OAuthProvider('apple.com').credential(
idToken: appleCredential.identityToken,
rawNonce: Platform.isIOS ? rawNonce : null,
accessToken: Platform.isIOS ? null : appleCredential.authorizationCode,
);

/// Once you are successful in generating Apple Credentials,
/// We pass them into the Firebase function to finally sign in.
UserCredential result = await _auth.signInWithCredential(appleAuthCredential);
User? user = result.user;

/// Check everything is ok and user is not null
if (user != null) {
if (result.additionalUserInfo!.isNewUser) {
await user.delete();
signOut();
return Strings.youHaveToSignUpbeforeSignInWithApple;
}
return _userFromFireBaseUser(user);
}
return null;
} catch (e) {
rethrow;
}
}
Поскольку в AndroidManifest.xml не было сказано ничего менять, я не стал его менять.

Подробнее здесь: https://stackoverflow.com/questions/774 ... on-android
Ответить

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

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

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

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

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