Quan trọng: Kể từ ngày 1 tháng 5 năm 2024, Apple cần có Tệp kê khai quyền riêng tư và chữ ký đối với những ứng dụng iOS sử dụng SDK thường dùng, bao gồm cả GoogleSignIn-iOS. Nâng cấp GoogleSignIn-iOS phiên bản 7.1.0 trở lên trước ngày 1 tháng 5 năm 2024. Làm theo hướng dẫn nâng cấp của chúng tôi.
Google sử dụng công nghệ AI để dịch nội dung sang ngôn ngữ bạn ưu tiên. Bản dịch bằng AI có thể có lỗi.
Ghi chú phát hành SDK của tính năng Đăng nhập bằng Google dành cho iOS và macOS
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Chưa phát hành
Khắc phục sự cố khi phản hồi lỗi phía máy chủ mang giá trị không phải chuỗi trong khoá error. Trình xử lý lỗi EMM đã gửi -hasPrefix: đến bất kỳ giá trị nào có sẵn, gây ra ngoại lệ bộ chọn không nhận dạng được trên một số, mảng hoặc đối tượng.
Khắc phục lỗi nonce tuỳ chỉnh và mã thông báo được yêu cầu claims bị loại bỏ khi quá trình đăng nhập tiếp tục sau khi khởi động lại ứng dụng chính sách thiết bị.
Thêm tính năng hỗ trợ Trình quản lý gói Swift cho AppCheckCore 12.x, giúp tương thích với Firebase 13. Các bản cài đặt CocoaPods vẫn bị hạn chế đối với AppCheckCore 11.x. (#626)
Khắc phục lỗi khiến quá trình chuẩn bị Kiểm tra ứng dụng không thành công nhưng lại được ghi nhận là thành công, khiến các lệnh gọi sau này đến -[GIDSignIn configureWithCompletion:] báo cáo thành công mà không thử lại. (#626)
Với AppCheckCore 11.x (bao gồm tất cả các bản cài đặt CocoaPods), nhà cung cấp Kiểm tra ứng dụng tuỳ chỉnh không trả về mã thông báo cũng như lỗi hiện được coi là thành công thay vì không thành công với kGIDAppCheckUnexpectedError. (#626)
Khắc phục tình trạng tương tranh dữ liệu trên mã thông báo của GIDGoogleUser. Các bản cập nhật mã thông báo đồng thời có thể ghi mã truy cập, mã làm mới và mã nhận dạng từ nhiều luồng cùng một lúc, và trình đọc có thể quan sát một tập hợp được cập nhật một phần. Ba mã thông báo hiện được xuất bản cùng nhau dưới dạng một ảnh chụp nhanh.
accessToken, refreshToken và idToken của GIDGoogleUser hiện đều được lấy từ ảnh chụp nhanh đó, vì vậy, đối tượng tiếp nhận dữ liệu khoá-giá trị của bất kỳ thuộc tính nào trong số đó đều được thông báo bất cứ khi nào có thuộc tính thay đổi, chứ không chỉ khi giá trị của thuộc tính đó thay đổi.
Đối tượng tiếp nhận dữ liệu khoá-giá trị của các thuộc tính đó sẽ được thông báo trong khi GIDGoogleUser giữ khoá nội bộ. Bạn có thể gọi lại cùng một người dùng từ trình quan sát, nhưng trình quan sát không được đợi đồng bộ (ví dụ: với dispatch_sync) trên một luồng khác đang cập nhật cùng một người dùng.
Khắc phục lỗi hộp thoại khắc phục EMM bị chặn trong suốt thời gian hoạt động còn lại của ứng dụng sau khi xảy ra một lỗi duy nhất trong khi không có cửa sổ chính nào. Cờ pending-dialog hiện đã được xoá trên mọi đường dẫn thoát và thao tác ghi xoá được đồng bộ hoá để khớp với thao tác đọc.
Khắc phục lỗi yêu cầu mã thông báo không thành công kèm theo lỗi EMM, đôi khi được báo cáo kèm theo lỗi OAuth cơ bản thay vì kGIDSignInErrorCodeEMM khi không thể hiển thị hộp thoại khắc phục.
Khắc phục lỗi EMM xảy ra khi hộp thoại khắc phục sự cố đang hiển thị được báo cáo là kGIDSignInErrorCodeUnknown (hoặc lỗi OAuth cơ bản, đối với yêu cầu mã thông báo) thay vì kGIDSignInErrorCodeEMM. Không có hộp thoại thứ hai nào xuất hiện.
10.0.0
QUAN TRỌNG: Cập nhật lên AppAuth 3.0.0 và GTMAppAuth 6.0.0, nâng mục tiêu triển khai tối thiểu lên iOS 15.0 và macOS 12.0, mở rộng phần phụ thuộc GTMSessionFetcher để cho phép 4.x và 5.x, đồng thời đổi tên tệp kê khai Trình quản lý gói Swift theo phiên bản cụ thể thành Package@swift-5.7.swift. Những dự án phải tiếp tục hỗ trợ các phiên bản hệ điều hành cũ hơn nên tiếp tục sử dụng GoogleSignIn 9.2.0. (#628)
Thêm GIDSignIn.wrapperIdentifier để các SDK nhúng tính năng Đăng nhập bằng Google có thể tự nhận dạng trong nhật ký chẩn đoán của Google thông qua một tham số gidwrapper mới. Đây là tính năng chọn sử dụng và hành vi hiện có sẽ không thay đổi. (#625)
Cập nhật biểu tượng nút đăng nhập thành biểu tượng chữ G chuyển màu của Google (#633)
Ghim tên Swift của các phương thức nhà máy GIDClaim bằng chú thích NS_SWIFT_NAME rõ ràng; tên Swift đã nhập không thay đổi (#627)
Sử dụng NSURLComponents để mã hoá mã thông báo đúng cách (#618)
Khắc phục sự cố trong additionalTokenRefreshParameters khi emmSupport là nil (#608)
Nội bộ
Hợp nhất các tham số ghi nhật ký SDK để chuẩn bị cho các tham số mới (#616)
Đảm bảo rằng completion không phải là giá trị rỗng trước khi gọi -[GIDSignIn restorePreviousSignIn:] (#301)
Xoá trình chạy macos-11 trong quy trình công việc của GitHub (#302)
Cập nhật tham chiếu tên nút để các kiểm thử tự động hoá giao diện người dùng vượt qua (#308)
7.1.0-fac-beta-1.0.0
Bản phát hành thử nghiệm hỗ trợ mã thông báo Kiểm tra ứng dụng Firebase dùng để thiết lập tính toàn vẹn của ứng dụng khi đăng nhập bằng Google
Nội bộ
Cập nhật phiên bản iOS tối thiểu của SignInSample Podfile (#355)
Cập nhật mục tiêu kiểm thử đơn vị AppCheckExample để vượt qua trong quá trình tích hợp liên tục (#356)
7.1.0-fac-eap-1.0.0
Bản phát hành Chương trình tiếp cận sớm (EAP) hỗ trợ mã thông báo Kiểm tra ứng dụng Firebase dùng để thiết lập tính toàn vẹn của ứng dụng khi đăng nhập bằng Google
Sử dụng -[GIDSignIn configureWithCompletion:] để định cấu hình GSI nhằm sử dụng tính năng Kiểm tra ứng dụng Firebase càng sớm càng tốt trong ứng dụng của bạn để giảm thiểu độ trễ.
Đảm bảo rằng bạn có thể sử dụng các lệnh nhập mô-đun khi tạo dưới dạng thư viện.
(#53)
6.0.1
Khắc phục lỗi không gọi được lệnh gọi lại lồng nhau cho các phương thức signIn và addScopes.
(#29)
6.0.0
Tính năng Đăng nhập bằng Google cho iOS hiện là nguồn mở.
Hỗ trợ Trình quản lý gói Swift.
Hỗ trợ Trình mô phỏng trên máy Mac M1.
Nội dung cập nhật về giao diện API
GIDSignIn
sharedInstance hiện là một thuộc tính lớp.
signIn hiện là signInWithConfiguration:presentingViewController:callback: và luôn yêu cầu phạm vi hồ sơ cơ bản.
addScopes:presentingViewController:callback: là cách mới để thêm phạm vi ngoài hồ sơ cơ bản cho người dùng hiện đã đăng nhập.
restorePreviousSignIn đổi tên thành restorePreviousSignInWithCallback:
disconnect đổi tên thành disconnectWithCallback:
Giao thức GIDSignInDelegate đã bị xoá và thay thế bằng các khối GIDSignInCallback và GIDDisconnectCallback.
Tất cả thuộc tính cấu hình quy trình đăng nhập đã được chuyển sang GIDConfiguration.
Lớp GIDConfiguration đã được thêm để thể hiện cấu hình cần thiết nhằm đăng nhập cho người dùng.
GIDAuthentication
getTokensWithHandler: đổi tên thành doWithFreshTokens:
GIDAuthenticationHandler typedef đã được đổi tên thành GIDAuthenticationAction.
refreshTokensWithHandler: đã bị xoá, hãy dùng doWithFreshTokens:.
GIDSignInButton không còn thực hiện lệnh gọi đến GIDSignIn trong nội bộ nữa và cần được kết nối với
IBAction hoặc tương tự để bạn có thể gọi
signInWithConfiguration:presentingViewController:callback: nhằm bắt đầu quy trình đăng nhập.
5.0.2
Khắc phục lỗi gửi mã lỗi không chính xác đến signIn:didSignInForUser:withError: khi người dùng
huỷ hộp thoại đồng ý của iOS trong quy trình đăng nhập.
5.0.1
Khắc phục vấn đề không thể bắt đầu quy trình đăng nhập đúng cách trên iOS 13.
Bản phân phối zip yêu cầu Xcode 11 trở lên.
5.0.0
Thay đổi đối với GIDSignIn
uiDelegate đã được thay thế bằng presentingViewController.
hasAuthInKeychain đã được thay thế bằng hasPreviousSignIn.
signInSilently đã được thay thế bằng restorePreviousSignIn.
Xoá mã lỗi kGIDSignInErrorCodeNoSignInHandlersInstalled không dùng nữa.
Thay đổi đối với GIDAuthentication
Xoá các phương thức getAccessTokenWithHandler: và refreshAccessTokenWithHandler: không dùng nữa.
Thay đổi đối với GIDGoogleUser
Xoá thuộc tính không dùng nữa accessibleScopes, hãy dùng grantedScopes.
Thêm các phần phụ thuộc vào AppAuth và GTMAppAuth.
Xoá phần phụ thuộc vào GoogleToolboxForMac.
Ngừng hỗ trợ iOS 7.
4.4.0
Xoá phần phụ thuộc vào GTM OAuth 2.
4.3.0
Hỗ trợ tính năng Quản lý thiết bị di động cho doanh nghiệp của Google.
4.2.0
Thêm grantedScopes vào GIDGoogleUser, cho phép xác nhận phạm vi nào đã được cấp sau khi đăng nhập thành công.
Ngừng sử dụng accessibleScopes trong GIDGoogleUser, hãy sử dụng grantedScopes.
Bản địa hoá GIDSignInButton cho hi (tiếng Hindi) và fr-CA (tiếng Pháp (Canada)).
Thêm phần phụ thuộc vào khung LocalAuthentication của hệ thống.
4.1.2
Thêm tính năng hỗ trợ pod try cho GoogleSignIn CocoaPod.
4.1.1
Khắc phục lỗi signInWillDispatch:error: của GIDSignInUIDelegate không được gọi trên iOS 11. Xin lưu ý rằng cả signIn:presentViewController: và signIn:dismissViewController: đều không được gọi trên iOS 11 vì SFAuthenticationSession không được trình điều khiển khung hiển thị của ứng dụng trình bày.
4.1.0
Sử dụng SFAuthenticationSession trên iOS 11.
4.0.2
Không còn phụ thuộc vào GoogleAppUtilities.
4.0.1
Chuyển sang các phần phụ thuộc pod nguồn mở.
Giao diện của nút đăng nhập không còn phụ thuộc vào phạm vi được yêu cầu.
4.0.0
Pod GoogleSignIn hiện có dạng khung tĩnh. Nhập bằng #import <GoogleSignIn/GoogleSignIn.h> trong Objective-C.
Thêm tính năng hỗ trợ mô-đun. Bạn cũng có thể sử dụng @import GoogleSignIn; trong Objective-C nếu mô-đun được bật và import GoogleSignIn trong Swift mà không cần sử dụng tiêu đề cầu nối.
Đối với người dùng bản phân phối zip độc lập, hiện có nhiều khung được cung cấp và tất cả đều cần được thêm vào dự án. Việc phân tách này giúp tăng tính linh hoạt trong trường hợp có các phần phụ thuộc trùng lặp.
Xoá phương thức checkGoogleSignInAppInstalled không dùng nữa khỏi GIDSignIn.
Xoá các thuộc tính allowsSignInWithBrowser và allowsSignInWithWebView khỏi GIDSignIn.
Không cần thêm mã nhận dạng gói dưới dạng lược đồ URL mà ứng dụng hỗ trợ nữa.
3.0.0
Cung cấp các thuộc tính givenName và familyName trên GIDProfileData.
Cho phép đặt thuộc tính loginHint trên GIDSignIn để điền trước mã nhận dạng hoặc địa chỉ email của người dùng trong quy trình đăng nhập.
Xoá danh mục UIViewController(SignIn) cũng như thuộc tính delegate khỏi GIDSignInButton.
Yêu cầu uiDelegate phải được đặt đúng cách trên GIDSignIn và khung SafariServices phải được liên kết.
Xoá phần phụ thuộc vào StoreKit.
Hỗ trợ mã bit.
Yêu cầu Xcode 7.0 trở lên do mã bit không tương thích với Xcode 6.
2.4.0
Cập nhật nút đăng nhập bằng biểu trưng Google mới.
Hỗ trợ quy định hạn chế về miền khi đăng nhập.
Cho phép làm mới mã thông báo giá trị nhận dạng.
2.3.2
Không còn yêu cầu Xcode 7.
2.3.1
Khắc phục sự cố trong imageURLWithDimension: của GIDProfileData.
2.3.0
Yêu cầu Xcode 7.0 trở lên.
Sử dụng SFSafariViewController để đăng nhập trên iOS 9. Bạn phải đặt uiDelegate để tính năng này hoạt động.
Tối ưu hoá việc tìm nạp hồ sơ người dùng.
Hỗ trợ GTMFetcherAuthorizationProtocol trong GIDAuthentication.
2.2.0
Tương thích với iOS 9 (bản thử nghiệm). Xin lưu ý rằng phiên bản SDK Đăng nhập này không bao gồm mã bit, vì vậy, bạn phải đặt ENABLE_BITCODE thành NO trong dự án nếu sử dụng Xcode 7.
Thêm giá trị nhận dạng mô tả cho các quy tắc ràng buộc của GIDSignInButton trong Bố cục tự động.
signInSilently không còn yêu cầu đặt uiDelegate.
2.1.0
Khắc phục các vấn đề về Bố cục tự động với GIDSignInButton.
Thêm API để làm mới mã truy cập trong GIDAuthentication.
Nội dung mô tả ngoại lệ rõ ràng hơn cho clientID chưa được chỉ định trong GIDSignIn.
Sửa các lỗi nhỏ khác.
2.0.1
Bản sửa lỗi
2.0.0
Hỗ trợ đăng nhập qua UIWebView thay vì chuyển đổi ứng dụng sang trình duyệt, có thể định cấu hình bằng thuộc tính allowsSignInWithWebView mới.
Giờ đây, những ứng dụng đã tắt tính năng chuyển đổi ứng dụng sang trình duyệt thông qua thuộc tính allowsSignInWithBrowser và chế độ xem web trong ứng dụng thông qua thuộc tính allowsSignInWithWebView có thể hiển thị lời nhắc hướng dẫn người dùng tải ứng dụng Google xuống từ App Store.
Khắc phục vấn đề về kích thước nút đăng nhập khi bật tính năng tự động bố cục
signInSilently hiện gọi uỷ quyền kèm theo lỗi khi hasAuthInKeychain
là NO như đã ghi trong tài liệu
Sửa các lỗi nhỏ khác
1.0.0
SDK mới tập trung vào tính năng đăng nhập với API mới
Nút đăng nhập được hiển thị linh động kèm theo thương hiệu theo bối cảnh
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2026-10-16 UTC."],[],[]]