Firebase:如何在真实设备上使用苹果登录获取电子邮件?

3

我正在实现苹果登录功能,这是我按下苹果按钮时的代码:

  onAppleButtonPress = async () => {
// performs login request
const appleAuthRequestResponse = await appleAuth.performRequest({
  requestedOperation: AppleAuthRequestOperation.LOGIN,
  requestedScopes: [
    AppleAuthRequestScope.EMAIL,
    AppleAuthRequestScope.FULL_NAME,
  ],
});

// Ensure Apple returned a user identityToken
if (!appleAuthRequestResponse.identityToken) {
  console.log('no token');
  throw 'Apple Sign-In failed - no identify token returned';
}

// Create a Firebase credential from the response
const {identityToken, nonce} = appleAuthRequestResponse;
const appleCredential = firebaseAuth.AppleAuthProvider.credential(
  identityToken,
  nonce,
);


//I WANT TO GET THE EMAIL HERE TO USE CHECK IT FROM FIREBASE IF EMAIL ALREADY EXISTS BY THIS CODE

firebaseAuth()
        .fetchSignInMethodsForEmail(appleAuthRequestResponse.email)
        .then(providers => {

});

}

在模拟器上可以运行,但在实际设备上邮件为null。有谁能帮忙吗?

1个回答

6

苹果只会在用户第一次登录时返回完整的姓名和电子邮件,随后的登录将返回 null ,因此您需要保存这些数据。

如果您需要再次接收这些信息,请前往设备设置;设置 > Apple ID、iCloud、iTunes 和 App Store > 密码和安全性 > 使用您的 Apple ID 的应用,点击您的应用并点击“停止使用 Apple ID”。现在您可以重新登录,将会收到完整的姓名和电子邮件。

源代码在此处


我是否需要在第一次登录时将电子邮件保存到本地以便获取电子邮件? - Heartless Vayne
不确定如何在iOS上清除缓存。如果他们从设置中删除了应用程序使用的Apple ID,我的假设是您将再次获得它,因为它将成为一个“新”用户。 - Steven Bell
救了我的一天,谢谢! - Umut Çağdaş Coşkun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接