反应原生Apple登录卡在IOS的输入密码屏幕中?
Posted
技术标签:
【中文标题】反应原生Apple登录卡在IOS的输入密码屏幕中?【英文标题】:React native Apple login stuck in enter password screen in IOS? 【发布时间】:2021-03-31 20:22:56 【问题描述】:在 ios 中输入密码后显示加载,之后没有任何反应。没有控制台日志?在 android 中运行良好。
我已经实现了 React Native Apple 身份验证的 V2 https://github.com/invertase/react-native-apple-authentication
在同一问题下尝试了 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,
requestedScopes: [appleAuth.Scope.EMAIL, appleAuth.Scope.FULL_NAME]
);
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);
【问题讨论】:
【参考方案1】:当我尝试在模拟器上运行代码时,这也发生在我身上,在真实设备上尝试它会起作用。 不要忘记在 Signing & Capabilities 中为发布和调试应用添加 Sign In with Apple。为此,您应该有一个 ADP 帐户。
谢谢。
【讨论】:
【参考方案2】:我也遇到过这种情况。在这里找到解决方案https://github.com/invertase/react-native-apple-authentication/issues/162#issuecomment-723502035。
基本上,如果您在模拟器上使用 iOS 13,或者在真实设备上使用 iOS 14。
【讨论】:
以上是关于反应原生Apple登录卡在IOS的输入密码屏幕中?的主要内容,如果未能解决你的问题,请参考以下文章
将 iOS 中的 AsyncStorage 与 Apple Watch 反应原生应用