expo apple войти в систему реагировать родной, возвращая нулевые значения

У меня есть вход с помощью Apple, реализованный в моем собственном приложении React. Иногда это работает, иногда нет.

Когда он не работает, он возвращает все нулевые значения пользователя, например:

{
  "authorizationCode": "123456789omitted",
  "email": null,
  "fullName": Object {
    "familyName": null,
    "givenName": null,
    "middleName": null,
    "namePrefix": null,
    "nameSuffix": null,
    "nickname": null,
  },
  "identityToken": "987654321omitted",
  "realUserStatus": 1,
  "state": null,
  "user": "192837465omitted",
}

почему это могло происходить?

<AppleAuthentication.AppleAuthenticationButton
  buttonType={AppleAuthentication.AppleAuthenticationButtonType.SIGN_IN}
  buttonStyle={AppleAuthentication.AppleAuthenticationButtonStyle.BLACK}
  cornerRadius={5}
  style={{
    width: Constant.width * 0.92,
    height: 44,
  }}
  onPress={async () => {
    try {
      setAppleLoggingIn(true);
      const credential = await AppleAuthentication.signInAsync({
        requestedScopes: [
          AppleAuthentication.AppleAuthenticationScope.FULL_NAME,
          AppleAuthentication.AppleAuthenticationScope.EMAIL,
        ],
      });
      // signed in
      onSignIn(credential);//signs in user via firebase
      setAppleLoggingIn(false);
    } catch (e) {
      if (e.code === "ERR_CANCELED") {
        // handle that the user canceled the sign-in flow
        setAppleLoggingIn(false);
        return {cancelled: true};
      } else {
        // handle other errors
        setAppleLoggingIn(false);
        return {error: true};
      }
    }
  }}
/>

Я думаю, что это как-то связано с этим вопросом, но я никогда не блокировал доступ приложения к моему идентификатору Apple ... Я всегда принимаю, когда оно запрашивает разрешения. Получение нулевого значения идентификатора электронной почты в качестве ответа во время аутентификации Apple < / а>


person Olivia    schedule 19.10.2020    source источник


Ответы (1)


Apple Sign In отправляет информацию о пользователе только при первом входе (регистрации). После этого вы должны сохранить их и повторно использовать, когда пользователь снова войдет в систему.

person Ben Fontan    schedule 20.10.2020
comment
что, если пользователь входит и выходит на нескольких устройствах? Как мне сохранить информацию для входа на каждое устройство? - person Olivia; 20.10.2020
comment
Поле пользователя является стабильным, поэтому вы можете хранить его в любом сервисе api / backend, в котором вы используете ссылку между адресом электронной почты / полным именем и пользователем при регистрации. docs.expo.io/versions/latest/sdk/apple-authentication / - person Ben Fontan; 20.10.2020