Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 21 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,21 @@

# 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.
Get users into your apps quickly and securely, using a registration system they already use and trust—their Google account.

Visit [our developer site](https://developers.google.com/identity/sign-in/ios/)
for integration instructions, documentation, support information, and terms of
service.
Visit [our developer site](https://developers.google.com/identity/sign-in/ios/) for integration instructions, documentation, support information, and terms of service.

## Getting Started

Try either the [Objective-C](Samples/ObjC) or [Swift](Samples/Swift) sample app.
For example, to demo the Objective-C sample project, you have three options:
Try either the [Objective-C](Samples/ObjC) or [Swift](Samples/Swift) sample app. For example, to demo the Objective-C sample project, you have three options:

1. Using [CocoaPods](https://cocoapods.org/)'s `try` method:

```
pod try GoogleSignIn
```

Note, this will default to providing you with the Objective-C sample app.
Note: This will default to providing you with the Objective-C sample app.

2. Using CocoaPod's `install` method:

Expand All @@ -42,76 +38,54 @@ 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](Samples/Swift/DaysUntilBirthday).
If you would like to see a Swift example, take a look at [Samples/Swift/DaysUntilBirthday](Samples/Swift/DaysUntilBirthday).

* Add Google Sign-In to your own app by following our
[getting started guides](https://developers.google.com/identity/sign-in/ios/start-integrating).
* Take a look at the
[API reference](https://developers.google.com/identity/sign-in/ios/api/).
- Add Google Sign-In to your own app by following our [getting started guides](https://developers.google.com/identity/sign-in/ios/start-integrating).
- Take a look at the [API reference](https://developers.google.com/identity/sign-in/ios/api/).

## 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 credientials via the Keychain on macOS, you will need to
[sign your app](https://developer.apple.com/support/code-signing/).
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 [sign your app](https://developer.apple.com/support/code-signing/).

### Mac Catalyst

Google Sign-In also supports iOS apps that are built for macOS via
[Mac Catalyst](https://developer.apple.com/mac-catalyst/). In order for your Mac Catalyst app
to store credientials via the Keychain on macOS, you will need to
[sign your app](https://developer.apple.com/support/code-signing/).
Google Sign-In also supports iOS apps that are built for macOS via [Mac Catalyst](https://developer.apple.com/mac-catalyst/). In order for your Mac Catalyst app to store credentials via the Keychain on macOS, you will need to [sign your app](https://developer.apple.com/support/code-signing/).

## 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.
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:

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

This example takes advantage of the initializer's [default argument for the
view model](GoogleSignInSwift/Sources/GoogleSignInButton.swift#L39).
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`](GoogleSignInSwift/Sources/GoogleSignInButtonViewModel.swift)
with different values for these properties to customize the button.
[This convenience initializer](GoogleSignInSwift/Sources/GoogleSignInButton.swift#L56)
provides parameters that you can use to set these values as needed.
This example takes advantage of the initializer's [default argument for the view model](GoogleSignInSwift/Sources/GoogleSignInButton.swift#L39). 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`](GoogleSignInSwift/Sources/GoogleSignInButtonViewModel.swift) with different values for these properties to customize the button. [This convenience initializer](GoogleSignInSwift/Sources/GoogleSignInButton.swift#L56) 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:
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>))`
```swift
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.
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.

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