Google 登录 iOS 和 macOS SDK 版本说明

未发布

  • 修复了当服务器错误响应在其 error 键下包含非字符串值时发生的崩溃问题。EMM 错误处理程序将 -hasPrefix: 发送到了存在的任何值,从而在数字、数组或对象上引发了无法识别的选择器异常。
  • 修复了在设备政策应用重启后继续登录时,自定义 nonce 和请求的令牌 claims 被丢弃的问题。
  • 为 AppCheckCore 12.x 添加了 Swift Package Manager 支持,从而实现与 Firebase 13 的兼容。CocoaPods 安装仍仅限于 AppCheckCore 11.x。(#626)
  • 修复了失败的 App Check 准备工作被记录为成功的问题,该问题导致后续对 -[GIDSignIn configureWithCompletion:] 的调用报告成功,而未重试。(#626)
  • 在 AppCheckCore 11.x(包括所有 CocoaPods 安装)中,既不返回令牌也不返回错误的自定义 App Check 提供方现在会被视为成功,而不是失败并显示 kGIDAppCheckUnexpectedError。(#626)
  • 修复了 GIDGoogleUser 令牌上的数据争用问题。并发令牌更新可能会同时从不同线程写入访问令牌、刷新令牌和 ID 令牌,而读取器可能会观察到部分更新的集合。这三个令牌现在会作为一个快照一起发布。
  • GIDGoogleUser 的 accessToken、refreshToken 和 idToken 现在都派生自该快照,因此,只要其中任何一个属性发生更改,而不仅仅是该属性自身的值发生更改,系统就会通知其中任何一个属性的键值对观察器。
  • 当 GIDGoogleUser 保持其内部锁定时,这些属性的键值对观察器会收到通知。从观察器回调到同一用户是可以的,但观察器不得在正在更新同一用户的另一个线程上同步等待(例如使用 dispatch_sync)。
  • 修复了以下问题:在没有可用关键窗口的情况下,如果出现单个错误,EMM 修复对话框会在应用的剩余生命周期内被抑制。现在,pending-dialog 标志会在每个退出路径上清除,并且其清除写入操作会与读取操作同步。
  • 修复了以下问题:当无法显示任何修复对话框时,失败并出现 EMM 错误的令牌请求有时会报告底层 OAuth 错误,而不是 kGIDSignInErrorCodeEMM。
  • 修复了以下问题:在修复对话框已显示时收到的 EMM 错误被报告为 kGIDSignInErrorCodeUnknown(或对于令牌请求,报告为底层 OAuth 错误),而不是 kGIDSignInErrorCodeEMM。不会显示第二个对话框。

10.0.0

  • 重大变更:更新到 AppAuth 3.0.0 和 GTMAppAuth 6.0.0,这会将最低部署目标提高到 iOS 15.0 和 macOS 12.0,扩大 GTMSessionFetcher 依赖项以允许 4.x 和 5.x,并将特定于版本的 Swift Package Manager 清单重命名为 Package@swift-5.7.swift。如果项目必须继续支持较低的操作系统版本,则应继续使用 GoogleSignIn 9.2.0。(#628)
  • 添加了 GIDSignIn.wrapperIdentifier,以便嵌入 Google 登录的 SDK 可以通过新的 gidwrapper 参数在 Google 的诊断日志中进行自我标识。此功能需要选择启用,且不会改变现有行为。(#625)
  • 将登录按钮图标更新为渐变色 Google G (#633)
  • 使用显式 NS_SWIFT_NAME 注解固定 GIDClaim 工厂方法的 Swift 名称;导入的 Swift 名称保持不变 (#627)
  • 使用 NSURLComponents 正确编码令牌 (#618)
  • 修复了 emmSupport 为 nil 时 additionalTokenRefreshParameters 中发生崩溃的问题 (#608)
  • 内部
    • 整合 SDK 日志记录参数,为新参数做好准备 (#616)
    • 修复了 swift-button-functional-test (#614)
    • 修复了 SignInSample 导入问题,并将示例添加到 CI (#632)
    • 向 CI 添加了非阻塞式 Xcode 27 预览版作业 (#629)
    • 提高了 Xcode 27 的示例 Podfile 部署目标 (#634)
    • 升级 bundler 组依赖项(#594、#630)

9.2.0

  • 公开刷新令牌失效日期 (#577)
  • 支持请求 amr(身份验证方法参考)声明 (#600)
  • 在全新安装时移除钥匙串条目 (#567)
  • 将 AppAuth-iOS 依赖项的最低版本更新为 2.1.0 (#603)
  • 修复了本地化字符串的可选 bundle 处理问题 (#373)
  • 在伞形标头中无条件包含所有公共标头 (#595)
  • 将 GIDSignInButton 导入移至条件编译之外 (#591)
  • 内部
    • 修复了 Swift Package Manager 弃用警告 (#579)
    • 改进了 GIDSignInButtonStyle 的文档注释 (#204)
    • 解决 AppIcon 资产目录中的未分配子级警告 (#348)
    • 重构 GitHub Actions 工作流 (#580)
    • 将 GitHub Actions 升级到最新版本,以实现 Node 24 兼容性(#592、#593)

9.1.0

  • 允许通过登录方法请求 claims(目前仅限 auth_time)(#550、#552、#553、#569)
  • 更新了 GIDSignIn 中的 addScopes: 方法,以包含之前请求的 claims (#557)
  • 内部
    • 在初始化程序中尽快分配给 keychainStore (#540)
    • 添加了对 Swift 6 的支持(#543、#544、#546)
    • 更新了 GitHub Actions 工作流(#545、#570)
    • 更新 DaysUntilBirthday 示例应用以支持 auth_time 声明 (#555)
    • 在整个代码中将 tokenClaims 重命名为 claims (#568)

9.0.0

  • 允许通过 GSI 向 AppAuth 提供自定义 nonce(#402、#476)
  • 修复了 GIDSignIn 中的无效错误代码 (#472)
  • 在 macOS 上添加了对 GTMAppAuth 5 的支持 (#522)
  • 修复了 Data Protected 迁移 bug (#533)
  • 内部
    • 将 AppAuthCore 添加为显式依赖项 (#470)
    • 将 iPhone 模拟器从 14 更新到 15 (#494)
    • 修复了 Swift 按钮集成测试 (#497)
    • 将运行器更新为 macos-13 (#498)
    • 更新 scorecards.yml 以使用 upload-artifact@v4.6.2 (#516)
    • 更新了 AppAuth 和 GTMAppAuth 依赖项(#517、#521)
    • 修复了回访用户的 Swift 集成测试 (#518)
    • 更新 .gitignore 以包含 .build 和 Package.resolved (#520)
    • 更新了 GIDSignInTest,以正确设置和拆解 NSUserDefaults (#527)

8.0.0

  • 正式发布版本,添加了 Firebase App Check 支持,以便在使用 Google 账号登录时验证应用的完整性
  • 将 iOS 最低支持版本更新为 iOS 12 (#445)
  • 内部
    • 将 AppCheckCore 依赖项更新到 v11.0 (#454)
    • 向测试辅助程序添加了 instancetype 返回 (#393)
    • 移除了 GTMSessionFetcher 模块化导入 (#403)
    • 将 bundler 组中的 activesupport 从 5.2.5 升级到 5.2.8.1 (#429)
    • 移除已弃用的 macos-11 运行器 (#447)
    • 更新了测试中已废弃的归档 API 用法 (#449)

7.1.0-fac-beta-1.1.0

7.1.0

  • 在 GoogleSignInSwiftSupport pod 中更新为 Swift 5.0 (#317)
  • 文档更新(#351、#372)
  • 添加了隐私清单 (#382)
  • 内部
    • 修复了 SFSafariViewController 中的拼写错误 (#291)
    • 修复了单元测试中的 OCMock 用法 (#298)
    • 使用 GTMAppAuth 4.0.0 中的新委托协议 (#299)
    • 确保在调用 -[GIDSignIn restorePreviousSignIn:] 之前 completion 不为 nil (#301)
    • 移除了 GitHub 工作流中的 macos-11 运行器 (#302)
    • 更新了按钮名称引用,以便界面自动化测试通过 (#308)

7.1.0-fac-beta-1.0.0

  • Beta 版,支持使用 Firebase App Check 令牌在用户使用 Google 账号登录时验证应用的完整性
  • 内部
    • 更新了 SignInSample Podfile 的 iOS 最低版本 (#355)
    • 更新 AppCheckExample 单元测试目标,以便在持续集成期间通过测试 (#356)

7.1.0-fac-eap-1.0.0

  • 抢先体验计划 (EAP) 版本,支持使用 Firebase App Check 令牌在用户使用 Google 账号登录时验证应用的完整性
  • 内部
    • 修复了 SFSafariViewController 中的拼写错误 (#291)
    • 移除了 GitHub 工作流中的 macos-11 运行器 (#302)
    • 更新了按钮名称引用,以便界面自动化测试通过 (#308)
    • 确保在调用 -[GIDSignIn restorePreviousSignIn:] 之前 completion 不为 nil (#301)
    • 使用 GTMAppAuth 4.0.0 中的新委托协议 (#299)

7.0.0

  • 现在,所有配置都可以通过 Info.plist 文件提供。(#228)
    • 使用 <key>KEY</key><string>VALUE</string> 对中的以下键来配置 SDK:
      • GIDClientID(必需)
      • GIDServerClientID(可选)
      • GIDHostedDomain(可选)
      • GIDOpenIDRealm(可选)
  • 支持 Swift 并发。(#187)
  • API Surface 改进(#249、#228、#187)
    • GIDSignIn
      • 新的 configuration 属性。
      • 从 signIn: 方法中移除了 Configuration: 参数。
      • 移除了 addScopes:,并将其添加到了 GIDGoogleUser。
      • 对于采用块的异步方法,将 callback: 参数重命名为 completion:。
    • GIDGoogleUser
      • 新的 configuration 属性。
      • 新增了从 GIDSignIn 移出的 addScopes: 方法。
      • 移除了 authentication 属性,并将其替换为:
        • 新的 accessToken 属性。
        • 新的 refreshToken 属性。
        • 新的 idToken 属性。
        • 新的 fetcherAuthorizer 属性。
        • 新增了 refreshTokensIfNeededWithCompletion: 方法。
    • 新增了 GIDToken 类,用于表示 GIDGoogleUser 中的访问令牌、刷新令牌和 ID 令牌。
    • 新增了 GIDSignInResult 类,用于表示成功的 signIn 或 addScopes 流程的结果。
    • 移除了 GIDSignInCallback、GIDDisconnectCallback 和 GIDAuthenticationAction 块类型定义。

6.2.4

  • 更新了 GTMSessionFetcher 依赖项,以允许使用 2.x 版本。(#207)

6.2.3

  • 修复了使用 CocoaPods use_frameworks! 时 GoogleSignInSwift 中的资源加载问题。(#197)
  • 防止在某些情况下使用 Swift Package Manager 时出现 GoogleSignInSwift 构建错误。(#166)

6.2.2

  • 防止在使用 Swift Package Manager 时出现 GoogleSignInSwift 构建错误。(#157)
  • 防止在 Xcode 12 及更低版本上出现构建错误。(#158)

6.2.1

  • 使用 GoogleSignInSwiftSupport 作为 Swift 支持 CocoaPod 的名称。(#137)

6.2.0

  • 支持 macOS。(#104)
  • 添加了 SwiftUI“使用 Google 账号登录”按钮。(#103)
  • 新增了在登录时请求其他范围的功能。(#30)
  • 修复了多个问题。(#87、#106)

6.1.0

  • 新增了演示 SwiftUI 的 Swift 示例应用。 (#63)
  • 支持 Mac Catalyst。
  • 改进了 addScopes 实现。 (#68、#70)

6.0.2

  • 确保在作为库构建时可以使用模块导入。 (#53)

6.0.1

  • 修复了未针对 signIn 和 addScopes 方法调用嵌套回调的问题。 (#29)

6.0.0

  • iOS 版 Google 登录现已开源。
  • Swift Package Manager 支持。
  • 支持在 M1 Mac 上使用模拟器。
  • API Surface 更新
    • GIDSignIn
      • sharedInstance 现在是一个类属性。
      • signIn 现在为 signInWithConfiguration:presentingViewController:callback:,并且始终请求基本个人资料范围。
      • addScopes:presentingViewController:callback: 是一种新方法,可向当前登录的用户添加基本个人资料以外的范围。
      • restorePreviousSignIn 现更名为 restorePreviousSignInWithCallback:。
      • disconnect 现更名为 disconnectWithCallback:。
      • GIDSignInDelegate 协议已被移除,取而代之的是 GIDSignInCallback 和 GIDDisconnectCallback 代码块。
      • 所有登录流程配置属性都已移至 GIDConfiguration。
    • 添加了 GIDConfiguration 类,用于表示登录用户所需的配置。
    • GIDAuthentication
      • getTokensWithHandler: 现更名为 doWithFreshTokens:。
      • GIDAuthenticationHandler typedef 已重命名为 GIDAuthenticationAction。
      • refreshTokensWithHandler: 已被移除,请改用 doWithFreshTokens:。
    • GIDSignInButton 不再在内部调用 GIDSignIn,需要连接到 IBAction 或类似对象,以便您调用 signInWithConfiguration:presentingViewController:callback: 来启动登录流程。

5.0.2

  • 修复了以下问题:当用户在登录流程中取消 iOS 的意见征求对话框时,系统会向 signIn:didSignInForUser:withError: 发送错误的错误代码。

5.0.1

  • 修复了在 iOS 13 上无法正确启动登录流程的问题。
  • ZIP 分发需要 Xcode 11 或更高版本。

5.0.0

  • GIDSignIn 的变更
    • uiDelegate 已替换为 presentingViewController。
    • hasAuthInKeychain 已替换为 hasPreviousSignIn。
    • signInSilently 已替换为 restorePreviousSignIn。
    • 移除了已废弃的 kGIDSignInErrorCodeNoSignInHandlersInstalled 错误代码。
  • 对 GIDAuthentication 的更改
    • 移除了已废弃的 getAccessTokenWithHandler: 和 refreshAccessTokenWithHandler: 方法。
  • 对 GIDGoogleUser 的更改
    • 移除了已废弃的属性 accessibleScopes,请改用 grantedScopes。
  • 添加了对 AppAuth 和 GTMAppAuth 的依赖项。
  • 移除了对 GoogleToolboxForMac 的依赖。
  • 不再支持 iOS 7。

4.4.0

  • 移除了对 GTM OAuth 2 的依赖。

4.3.0

  • 支持 Google 的企业移动管理。

4.2.0

  • 向 GIDGoogleUser 添加了 grantedScopes,以便在成功登录后确认已授予哪些范围。
  • 弃用 GIDGoogleUser 中的 accessibleScopes,请改用 grantedScopes。
  • 针对 hi(印地语)和 fr-CA(法语 [加拿大])对 GIDSignInButton 进行本地化。
  • 添加对系统 LocalAuthentication 框架的依赖项。

4.1.2

  • 为 GoogleSignIn CocoaPod 添加了 pod try 支持。

4.1.1

  • 修复了在 iOS 11 上未调用 GIDSignInUIDelegate 的 signInWillDispatch:error: 的问题。请注意,在 iOS 11 上,signIn:presentViewController: 和 signIn:dismissViewController: 都不会被调用,因为 SFAuthenticationSession 不是由应用的视图控制器呈现的。

4.1.0

  • 在 iOS 11 上使用 SFAuthenticationSession。

4.0.2

  • 不再依赖于 GoogleAppUtilities。

4.0.1

  • 切换到开源 Pod 依赖项。
  • 登录按钮的外观不再取决于请求的范围。

4.0.0

  • GoogleSignIn pod 现在采用静态框架的形式。在 Objective-C 中使用 #import <GoogleSignIn/GoogleSignIn.h> 导入。
  • 添加了模块支持。如果模块已启用,您还可以在 Objective-C 中使用 @import GoogleSignIn;,在 Swift 中使用 import GoogleSignIn,而无需使用桥接头。
  • 对于独立 zip 分发的用户,现在提供了多个框架,并且都需要添加到项目中。这种分解方式在存在重复依赖项时提供了更大的灵活性。
  • 从 GIDSignIn 中移除了已废弃的方法 checkGoogleSignInAppInstalled。
  • 从 GIDSignIn 中移除 allowsSignInWithBrowser 和 allowsSignInWithWebView 属性。
  • 无需再将软件包 ID 添加为应用支持的网址协议。

3.0.0

  • 在 GIDProfileData 上提供 givenName 和 familyName 属性。
  • 允许在 GIDSignIn 上设置 loginHint 属性,以便在登录流程中预填充用户的 ID 或电子邮件地址。
  • 从 GIDSignInButton 中移除了 UIViewController(SignIn) 类别以及 delegate 属性。
  • 要求已在 GIDSignIn 上正确设置 uiDelegate,并且已关联 SafariServices 框架。
  • 移除了对 StoreKit 的依赖。
  • 提供位码支持。
  • 由于位码与 Xcode 6 不兼容,因此需要 Xcode 7.0 或更高版本。

2.4.0

  • 使用新 Google 徽标更新登录按钮。
  • 支持登录网域限制。
  • 允许刷新 ID 令牌。

2.3.2

  • 不再需要 Xcode 7。

2.3.1

  • 修复了 GIDProfileData 的 imageURLWithDimension: 中发生崩溃的问题。

2.3.0

  • 需要使用 Xcode 7.0 或更高版本。
  • 在 iOS 9 上使用 SFSafariViewController 进行登录。必须设置 uiDelegate 才能正常运行。
  • 优化了用户个人资料的提取。
  • 支持 GIDAuthentication 中的 GTMFetcherAuthorizationProtocol。

2.2.0

  • 与 iOS 9(Beta 版)兼容。请注意,此版本的登录 SDK 不包含位码,因此如果您使用 Xcode 7,则必须在项目中将 ENABLE_BITCODE 设置为 NO。
  • 为 GIDSignInButton 的自动布局约束条件添加了描述性标识符。
  • signInSilently 不再需要设置 uiDelegate。

2.1.0

  • 修复了 GIDSignInButton 的自动布局问题。
  • 在 GIDAuthentication 中添加了用于刷新访问令牌的 API。
  • 针对 GIDSignIn 中未分配的 clientID 提供了更完善的异常说明。
  • 修复了一些其他小 bug。

2.0.1

  • 问题修复

2.0.0

  • 支持通过 UIWebView 登录,而不是通过应用切换到浏览器,可使用新的 allowsSignInWithWebView 属性进行配置。
  • 现在,如果应用通过 allowsSignInWithBrowser 属性停用了应用切换到浏览器功能,并通过 allowsSignInWithWebView 属性停用了应用内网页视图功能,则可以选择显示提示,指示用户从应用商店下载 Google 应用。
  • 修复了启用自动布局时登录按钮大小不正确的问题
  • 现在,当 hasAuthInKeychain 为 NO 时,signInSilently 会按照文档说明调用委托并返回错误
  • 修复了一些其他小 bug

1.0.0

  • 采用全新 API 的新版 SDK,专注于登录功能
  • 动态呈现的登录按钮,带有情境品牌信息
  • 基本配置文件支持
  • 添加了 allowsSignInWithBrowser 属性