反应原生Apple登录卡在IOS中的输入密码屏幕?

问题描述

在IOS中输入密码后显示加载,之后没有任何反应。没有控制台日志?在android中工作正常。

我已经实现了反应原生苹果认证的V2 https://github.com/invertase/react-native-apple-authentication

enter image description here

在同一问题下尝试了 2 个代码

代码 1

  const IOSAppleLogin = async () => {
        try {
            // performs login request
            const appleAuthRequestResponse = await appleAuth.performRequest({
                requestedOperation: appleAuth.Operation.LOGIN,requestedScopes: [appleAuth.Scope.EMAIL,appleAuth.Scope.FULL_NAME]
            });
    
            const credentialState = await appleAuth.getCredentialStateForUser(
                appleAuthRequestResponse.user
            );
    

            if (credentialState === appleAuth.State.AUTHORIZED) {

            console.log('appleAuthRequestResponse',appleAuthRequestResponse);
           
            const response = appleAuthRequestResponse;
            console.log('apple-response',response);
            // you may also want to send the device's ID to your server to link a device with the account
            // identityToken generated


            if (response) {
                if (response.identityToken) {
                    let device_identifier = DeviceInfo.getUniqueId();
                    let details = {
                        'identity_token': response.identityToken,'first_name': response.fullName ? response.fullName.givenname : '-','last_name': response.fullName ? response.fullName.familyName : '-','device_identifier': device_identifier,device: Platform.OS
                    };
                    props.appleLogin({ values: details });
                }
            }
            // user is authenticated
            }

        } catch (error) {
            if (appleAuth.Error.CANCELED === error.code) {
                console.log('apple-error-CANCELED',JSON.stringify(error));
            } else if (appleAuth.Error.Failed === error.code) {
                console.log('apple-error-Failed',error);
            } else if (appleAuth.Error.NOT_HANDLED === error.code) {
                console.log('apple-error-NOT_HANDLED',error);
            } else {
                console.log('apple-error',error);
            }
        }
    }

代码 2

  const IOSAppleLogin = async () => {
        try {
            // performs login request
            const appleAuthRequestResponse = await appleAuth.performRequest({
                requestedOperation: appleAuth.Operation.LOGIN,appleAuth.Scope.FULL_NAME]
            });
    

            console.log('appleAuthRequestResponse',device: Platform.OS
                    };
                    props.appleLogin({ values: details });
                }
            }
            // user is authenticated

        } catch (error) {
            if (appleAuth.Error.CANCELED === error.code) {
                console.log('apple-error-CANCELED',error);
            }
        }
    }

解决方法

我也遇到过这种情况。在此处找到解决方案 https://github.com/invertase/react-native-apple-authentication/issues/162#issuecomment-723502035

基本上,如果您在模拟器上使用 iOS 13,或者在真实设备上使用 iOS 14。

,

当我尝试在模拟器上运行代码时,这也发生在我身上,在真实设备上尝试它会起作用。 不要忘记在 Signing & Capabilities 中为发布和调试应用添加Sign In with Apple。为此,您应该有一个 ADP 帐户。

谢谢。