Я следил и просматривал это руководство на 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;
}
}
Подробнее здесь: https://stackoverflow.com/questions/774 ... on-android
Мобильная версия