GitPedia

GoogleSignIn iOS

Enables iOS and macOS apps to sign in with Google.

From google·Updated June 17, 2026·View on GitHub·

Get users into your apps quickly and securely, using a registration system they already use and trust—their Google account. The project is written primarily in Objective-C, distributed under the Apache License 2.0 license, first published in 2021. Key topics include: authentication, ios-sdk, oauth2, openid-connect.

Latest release: 9.2.0Google Sign-In 9.2.0
June 15, 2026View Changelog →

Version
Platform
License
unit_tests
integration_tests

Google Sign-In for iOS and macOS

Get users into your apps quickly and securely, using a registration system they
already use and trust—their Google account.

Visit our developer site
for integration instructions, documentation, support information, and terms of
service.

Getting Started

Try either the Objective-C or Swift sample app.
For example, to demo the Objective-C sample project, you have two options:

  1. Using CocoaPod's install method:
git clone https://github.com/google/GoogleSignIn-iOS
cd GoogleSignIn-iOS/Samples/ObjC/SignInSample/
pod install
open SignInSampleForPod.xcworkspace
  1. Using Swift Package Manager:
git clone https://github.com/google/GoogleSignIn-iOS
open GoogleSignIn-iOS/Samples/ObjC/SignInSample/SignInSample.xcodeproj

If you would like to see a Swift example, take a look at
Samples/Swift/DaysUntilBirthday.

Google Sign-In on macOS

Google Sign-In allows your users to sign-in to your native macOS app using their Google account
and default browser. When building for macOS, the signInWithConfiguration: and addScopes:
methods take a presentingWindow: parameter in place of presentingViewController:. Note that
in order for your macOS app to store credentials via the Keychain on macOS, you will need to add
$(AppIdentifierPrefix)$(CFBundleIdentifier) as the first item in its keychain access group.

Mac Catalyst

Google Sign-In also supports iOS apps that are built for macOS via
Mac Catalyst. In order for your Mac Catalyst app
to store credentials via the Keychain on macOS, you will need to add
$(AppIdentifierPrefix)$(CFBundleIdentifier) as the first item in the keychain
access group.

Using the Google Sign-In Button

There are several ways to add a 'Sign in with Google' button to your app, which
path you choose will depend on your UI framework and target platform.

SwiftUI (iOS and macOS)

Creating a 'Sign in with Google' button in SwiftUI can be as simple as this:

GoogleSignInButton {
  GIDSignIn.sharedInstance.signIn(withPresenting: yourViewController) { signInResult, error in
      // check `error`; do something with `signInResult`
  }
}

This example takes advantage of the initializer's default argument for the
view model
.
The default arguments for the view model will use the light scheme, the
standard button style, and the normal button state.
You can supply an instance of GoogleSignInButtonViewModel
with different values for these properties to customize the button.
This convenience initializer
provides parameters that you can use to set these values as needed.

UIKit (iOS)

If you are not using SwiftUI to build your user interfaces, you can either
create GIDSignInButton programmatically, or in a Xib/Storyboard.
If you are writing programmatic UI code, it will look something like this:

let button = GIDSignInButton(frame: CGRect(<YOUR_RECT>))

AppKit (macOS)

Given that GIDSignInButton is implemented as a subclass of UIControl, it
will not be available on macOS.
You can instead use the SwiftUI Google sign-in button.
Doing so will require that you wrap the SwiftUI button in a hosting view so
that it will be available for use in AppKit.

let signInButton = GoogleSignInButton {
  GIDSignIn.sharedInstance.signIn(withPresenting: yourViewController) { signInResult, error in
      // check `error`; do something with `signInResult`
  }
}
let hostedButton = NSHostingView(rootView: signInButton)

A Note on iOS Keychain Access Groups

GSI uses your default (first listed) keychain access group. If you don't add a
custom keychain access group, the default keychain access group is provided by
Xcode and looks like $(AppIdentifierPrefix)$(CFBundleIdentifier).

GSI removes keychain items upon fresh install
to ensure that stale credentials from previous installs of your app are not
mistakenly used. If your app uses a shared access group by default this may
lead to new installs of apps sharing the same keychain access group to remove
keychain credentials for apps already installed.

To prevent unintentional credential removal, you can explicitly list the
typical default access group (or whatever you prefer so long as it is not
shared) in your list first. GSI, will then use that default access group.

Contributors

Showing top 12 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from google/GoogleSignIn-iOS via the GitHub API.Last fetched: 6/22/2026