首页 > 解决方案 > 在iOS中反应原生谷歌登录失败反应原生

问题描述

我运行 react-native 升级来修复 play store base 64 问题。Android 运行良好,这是我在使用 iOS 时面临的唯一问题。为构建运行时,React Native google sing in 失败。

我已经运行了以下命令:

以下是错误:

1) 'GIDSignIn' 没有可见的@interface 声明选择器'signInSilently'

[[GIDSignIn sharedInstance] signInSilently];

2) 'GIDSignIn' 没有可见的@interface 声明选择器'hasAuthInKeychain'

RCT_REMAP_METHOD(isSignedIn,
                 resolver:(RCTPromiseResolveBlock)resolve
                 rejecter:(RCTPromiseRejectBlock)reject)
{
  BOOL isSignedIn = [[GIDSignIn sharedInstance] hasAuthInKeychain];
  resolve([NSNumber numberWithBool:isSignedIn]);
}

3) 'GIDSignIn' 没有可见的@interface 声明选择器'handleURL:sourceApplication:annotation:'

+ (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation: (id)annotation {

  return [[GIDSignIn sharedInstance] handleURL:url
                             sourceApplication:sourceApplication
                                    annotation:annotation];
}

4) 使用未声明的标识符“kGIDSignInErrorCodeNoSignInHandlersInstalled”

case kGIDSignInErrorCodeNoSignInHandlersInstalled:

请让我知道是否有人可以帮助我...谢谢!

标签: iosswiftreact-nativegoogle-signinreact-native-ios

解决方案


我不是专家并且完全理解,但在从文档中了解详细信息后提出了我自己的方法。

第 4 点在 5.0.0 中已弃用,因此请注释掉或删除它。第 1 点和第 2 点您需要在 GoogleSignIn.h 文件中输入,但根据文档,hasAuthInKeychain 被替换为 hasPreviousSignIn 并且 signInSilently 已被替换为 hasPreviousSignIn。

您可以通过将 signInSilently 和 hasAuthInKeychain 条目添加到 GoogleSignIn.h 文件来克服该错误。

您可以参考https://developers.google.com/identity/sign-in/ios/release中的详细信息。


推荐阅读