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

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)
    • Sửa swift-button-functional-test (#614)
    • Sửa lỗi nhập SignInSample và thêm mẫu vào CI (#632)
    • Thêm các công việc xem trước Xcode 27 không chặn vào CI (#629)
    • Tăng mục tiêu triển khai Podfile mẫu cho Xcode 27 (#634)
    • Tăng các phần phụ thuộc của nhóm trình đóng gói (#594, #630)

9.2.0

  • Hiển thị ngày hết hạn của mã làm mới (#577)
  • Hỗ trợ yêu cầu xác nhận quyền sở hữu amr (Tham chiếu phương thức xác thực) (#600)
  • Xoá các mục nhập chuỗi khoá trong một lượt cài đặt mới (#567)
  • Cập nhật phần phụ thuộc AppAuth-iOS tối thiểu lên phiên bản 2.1.0 (#603)
  • Sửa lỗi xử lý gói không bắt buộc cho chuỗi đã bản địa hoá (#373)
  • Thêm tất cả tiêu đề công khai vô điều kiện vào tiêu đề chung (#595)
  • Di chuyển lệnh nhập GIDSignInButton ra ngoài quá trình biên dịch có điều kiện (#591)
  • Nội bộ
    • Khắc phục cảnh báo về việc ngừng sử dụng Trình quản lý gói Swift (#579)
    • Cải thiện nhận xét trong tài liệu cho GIDSignInButtonStyle (#204)
    • Giải quyết cảnh báo về tài sản con chưa được chỉ định trong danh mục tài sản AppIcon (#348)
    • Tái cấu trúc quy trình công việc của GitHub Actions (#580)
    • Nâng cấp GitHub Actions lên phiên bản mới nhất để tương thích với Node 24 (#592, #593)

9.1.0

  • Cho phép yêu cầu claims (hiện chỉ có auth_time) thông qua Phương thức đăng nhập (#550, #552, #553, #569)
  • Cập nhật các phương thức addScopes: trong GIDSignIn để thêm claims đã yêu cầu trước đó (#557)
  • Nội bộ
    • Chỉ định cho keychainStore càng sớm càng tốt trong trình khởi tạo (#540)
    • Thêm tính năng hỗ trợ cho Swift 6 (#543, #544, #546)
    • Cập nhật quy trình công việc của GitHub Actions (#545, #570)
    • Cập nhật ứng dụng mẫu DaysUntilBirthday để hỗ trợ thông báo xác nhận quyền sở hữu auth_time (#555)
    • Đổi tên tokenClaims thành claims trong toàn bộ mã (#568)

9.0.0

  • Cho phép cung cấp nonce tuỳ chỉnh thông qua GSI cho AppAuth (#402, #476)
  • Sửa mã lỗi không hợp lệ trong GIDSignIn (#472)
  • Thêm tính năng hỗ trợ cho GTMAppAuth 5 trên macOS (#522)
  • Sửa lỗi di chuyển dữ liệu được bảo vệ (#533)
  • Nội bộ
    • Thêm AppAuthCore làm phần phụ thuộc rõ ràng (#470)
    • Cập nhật trình mô phỏng iPhone từ 14 lên 15 (#494)
    • Sửa lỗi kiểm thử tích hợp nút Swift (#497)
    • Cập nhật trình chạy lên macos-13 (#498)
    • Cập nhật scorecards.yml để dùng upload-artifact@v4.6.2 (#516)
    • Cập nhật các phần phụ thuộc AppAuth và GTMAppAuth (#517, #521)
    • Sửa các chương trình kiểm thử tích hợp Swift cho người dùng cũ (#518)
    • Cập nhật .gitignore để thêm .build và Package.resolved (#520)
    • Cập nhật GIDSignInTest để thiết lập và chia nhỏ NSUserDefaults một cách chính xác (#527)

8.0.0

  • Bản phát hành chung bổ sung tính năng hỗ trợ Kiểm tra ứng dụng Firebase để thiết lập tính toàn vẹn của ứng dụng khi đăng nhập bằng Google
  • Cập nhật phiên bản iOS tối thiểu được hỗ trợ lên iOS 12 (#445)
  • Nội bộ
    • Cập nhật phần phụ thuộc AppCheckCore lên phiên bản 11.0 (#454)
    • Thêm giá trị trả về instancetype vào trình trợ giúp kiểm thử (#393)
    • Xoá lệnh nhập mô-đun GTMSessionFetcher (#403)
    • Nâng cấp activesupport từ 5.2.5 lên 5.2.8.1 trong nhóm bundler (#429)
    • Xoá trình chạy macos-11 không dùng nữa (#447)
    • Cập nhật cách sử dụng API lưu trữ không dùng nữa trong các chương trình kiểm thử (#449)

7.1.0-fac-beta-1.1.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
  • Thêm tính năng hỗ trợ tệp kê khai quyền riêng tư được phát hành trong v7.1.0
  • Nội bộ

7.1.0

  • Cập nhật lên Swift 5.0 trong pod GoogleSignInSwiftSupport (#317)
  • Nội dung cập nhật tài liệu (#351, #372)
  • Thêm tệp kê khai về quyền riêng tư (#382)
  • Nội bộ
    • Sửa lỗi chính tả trong SFSafariViewController (#291)
    • Sửa cách sử dụng OCMock trong kiểm thử đơn vị (#298)
    • Sử dụng giao thức uỷ quyền mới từ GTMAppAuth 4.0.0 (#299)
    • Đả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
  • Nội bộ
    • Sửa lỗi chính tả trong SFSafariViewController (#291)
    • 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)
    • Đảm bảo rằng completion không rỗng trước khi gọi -[GIDSignIn restorePreviousSignIn:] (#301)
    • Sử dụng giao thức uỷ quyền mới từ GTMAppAuth 4.0.0 (#299)

7.0.0

  • Giờ đây, bạn có thể cung cấp tất cả cấu hình thông qua tệp Info.plist. (#228)
    • Sử dụng các khoá sau trong các cặp <key>KEY</key><string>VALUE</string> để định cấu hình SDK:
      • GIDClientID (bắt buộc)
      • GIDServerClientID (không bắt buộc)
      • GIDHostedDomain (không bắt buộc)
      • GIDOpenIDRealm (không bắt buộc)
  • Hỗ trợ Swift Concurrency. (#187)
  • Cải tiến giao diện API (#249, #228, #187)
    • GIDSignIn
      • Thuộc tính configuration mới.
      • Đã xóa các đối số Configuration: khỏi phương thức signIn:.
      • Đã xóa addScopes: và thêm vào GIDGoogleUser.
      • Đổi tên đối số callback: thành completion: cho các phương thức không đồng bộ lấy khối.
    • GIDGoogleUser
      • Thuộc tính configuration mới.
      • Phương thức addScopes: mới được di chuyển từ GIDSignIn.
      • Đã xóa thuộc tính authentication và thay thế bằng:
        • Thuộc tính accessToken mới.
        • Thuộc tính refreshToken mới.
        • Thuộc tính idToken mới.
        • Thuộc tính fetcherAuthorizer mới.
        • Phương thức refreshTokensIfNeededWithCompletion: mới.
    • Lớp GIDToken mới để thể hiện mã truy cập, mã làm mới và mã nhận dạng trong GIDGoogleUser.
    • Lớp GIDSignInResult mới để thể hiện kết quả của quy trình signIn hoặc addScopes thành công.
    • Đã xóa các định nghĩa loại khối GIDSignInCallback, GIDDisconnectCallback và GIDAuthenticationAction.

6.2.4

  • Cập nhật phần phụ thuộc GTMSessionFetcher để cho phép các phiên bản 2.x. (#207)

6.2.3

  • Khắc phục lỗi tải tài nguyên trong GoogleSignInSwift bằng use_frameworks! của CocoaPods (#197)
  • Ngăn lỗi bản dựng cho GoogleSignInSwift trong một số trường hợp khi sử dụng Trình quản lý gói Swift. (#166)

6.2.2

  • Ngăn lỗi bản dựng cho GoogleSignInSwift khi sử dụng Trình quản lý gói Swift. (#157)
  • Ngăn lỗi bản dựng trên Xcode 12 trở xuống. (#158)

6.2.1

  • Sử dụng GoogleSignInSwiftSupport làm tên của CocoaPod hỗ trợ Swift. (#137)

6.2.0

  • Hỗ trợ macOS. (#104)
  • Thêm nút "Đăng nhập bằng Google" của SwiftUI. (#103)
  • Thêm khả năng yêu cầu thêm phạm vi khi đăng nhập. (#30)
  • Khắc phục một số vấn đề. (#87, #106)

6.1.0

  • Ứng dụng mẫu Swift mới minh hoạ SwiftUI. (#63)
  • Hỗ trợ Mac Catalyst.
  • Cải tiến cách triển khai addScopes. (#68, #70)

6.0.2

  • Đả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
  • Hỗ trợ hồ sơ cơ bản
  • Thêm thuộc tính allowSignInWithBrowser