appleAuthRequestResponse возвращает значение null для полного имени и электронной почты

#react-native #authentication

#react-native #аутентификация

Вопрос:

Я не понимаю, почему приведенный ниже фрагмент кода показывает значение null для электронной почты и полного имени в консоли после успешной аутентификации пользователя. Я внимательно прочитал документацию и попробовал все, что мог. Любая помощь была бы высоко оценена.

 async function onAppleButtonPress() {
    // performs login request
    const appleAuthRequestResponse = await appleAuth.performRequest({
      requestedOperation: AppleAuthRequestOperation.LOGIN,
      requestedScopes: [AppleAuthRequestScope.EMAIL, AppleAuthRequestScope.FULL_NAME],
    });
    //api getting current state of the user
    const credentialState = await appleAuth.getCredentialStateForUser(appleAuthRequestResponse.user);
    
    if (credentialState === AppleAuthCredentialState.AUTHORIZED) {
      // user is authenticated
      console.log("email is",appleAuthRequestResponse.email);
      console.log("full name is",appleAuthRequestResponse.fullName);
    }  
  }
  

Ответ №1:

Вы все еще можете получить электронное письмо из identityToken, предоставленного appleAuthrequestResponse любым jwt-декодером, таким как jwt-decode

     const {identityToken, nonce, email} = appleAuthRequestResponse
    const {email} = jwt_decode(identityToken)
    console.log(email)
  

Ответ №2:

Apple возвращает только полное имя и адрес электронной почты при первом входе в систему, при последующем входе в систему оно вернет значение null, поэтому вам необходимо сохранить эти данные.

Чтобы получить их снова, перейдите в настройки своего устройства; Settings > Apple ID, iCloud, iTunes amp; App Store > Password amp; Security > Apps Using Your Apple ID , нажмите на свое приложение и нажмите Прекратить использование Apple ID. Теперь вы можете снова войти в систему, и вы получите полное имя и адрес электронной почты.

Источник здесь.