-
Notifications
You must be signed in to change notification settings - Fork 891
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
AWSGoogleSignIn upgrade to GoogleSignIn 8.0.0
- Loading branch information
Bill Bunting
committed
Feb 2, 2025
1 parent
fa5792c
commit 6ca4b99
Showing
10 changed files
with
544 additions
and
247 deletions.
There are no files selected for viewing
69 changes: 18 additions & 51 deletions
69
AWSAuthSDK/Dependencies/GoogleHeaders/GIDAuthentication.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,65 +1,32 @@ | ||
/* | ||
* GIDAuthentication.h | ||
* Google Sign-In iOS SDK | ||
* Copyright 2022 Google LLC | ||
* | ||
* Copyright 2014 Google Inc. | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* Use of this SDK is subject to the Google APIs Terms of Service: | ||
* https://developers.google.com/terms/ | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
#import <Foundation/Foundation.h> | ||
|
||
@protocol GTMFetcherAuthorizationProtocol; | ||
@class GIDAuthentication; | ||
|
||
/// The callback block that takes a `GIDAuthentication`, or an error if attempt | ||
/// to refresh was unsuccessful. | ||
typedef void (^GIDAuthenticationHandler)(GIDAuthentication *authentication, NSError *error); | ||
@class OIDAuthState; | ||
|
||
/// The callback block that takes an access token, or an error if attempt to refresh was | ||
/// unsuccessful. | ||
typedef void (^GIDAccessTokenHandler)(NSString *accessToken, NSError *error); | ||
NS_ASSUME_NONNULL_BEGIN | ||
|
||
/// This class represents the OAuth 2.0 entities needed for sign-in. | ||
// Internal class for GIDGoogleUser NSCoding backward compatibility. | ||
@interface GIDAuthentication : NSObject <NSSecureCoding> | ||
|
||
/// The client ID associated with the authentication. | ||
@property(nonatomic, readonly) NSString *clientID; | ||
|
||
/// The OAuth2 access token to access Google services. | ||
@property(nonatomic, readonly) NSString *accessToken; | ||
|
||
/// The estimated expiration date of the access token. | ||
@property(nonatomic, readonly) NSDate *accessTokenExpirationDate; | ||
|
||
/// The OAuth2 refresh token to exchange for new access tokens. | ||
@property(nonatomic, readonly) NSString *refreshToken; | ||
@property(nonatomic) OIDAuthState* authState; | ||
|
||
/// An OpenID Connect ID token that identifies the user. Send this token to your server to | ||
/// authenticate the user there. For more information on this topic, see | ||
/// https://developers.google.com/identity/sign-in/ios/backend-auth | ||
@property(nonatomic, readonly) NSString *idToken; | ||
|
||
/// The estimated expiration date of the ID token. | ||
@property(nonatomic, readonly) NSDate *idTokenExpirationDate; | ||
|
||
/// Gets a new authorizer for `GTLService`, `GTMSessionFetcher`, or `GTMHTTPFetcher`. | ||
/// | ||
/// @return A new authorizer | ||
- (id<GTMFetcherAuthorizationProtocol>)fetcherAuthorizer; | ||
|
||
/// Get a valid access token and a valid ID token, refreshing them first if they have expired or are | ||
/// about to expire. | ||
/// | ||
/// @param handler A callback block that takes a `GIDAuthentication`, or an | ||
/// error if attempt to refresh was unsuccessful. | ||
- (void)getTokensWithHandler:(GIDAuthenticationHandler)handler; | ||
|
||
/// Refreshes the access token and the ID token using the refresh token. | ||
/// | ||
/// @param handler A callback block that takes a `GIDAuthentication`, or an | ||
/// error if attempt to refresh was unsuccessful. | ||
- (void)refreshTokensWithHandler:(GIDAuthenticationHandler)handler; | ||
- (instancetype)initWithAuthState:(OIDAuthState *)authState; | ||
|
||
@end | ||
|
||
NS_ASSUME_NONNULL_END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
/* | ||
* Copyright 2021 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
#import <Foundation/Foundation.h> | ||
|
||
NS_ASSUME_NONNULL_BEGIN | ||
|
||
/// This class represents the client configuration provided by the developer. | ||
@interface GIDConfiguration : NSObject <NSCopying, NSSecureCoding> | ||
|
||
/// The client ID of the app from the Google Cloud Console. | ||
@property(nonatomic, readonly) NSString *clientID; | ||
|
||
/// The client ID of the home server. This will be returned as the `audience` property of the | ||
/// OpenID Connect ID token. For more info on the ID token: | ||
/// https://developers.google.com/identity/sign-in/ios/backend-auth | ||
@property(nonatomic, readonly, nullable) NSString *serverClientID; | ||
|
||
/// The Google Apps domain to which users must belong to sign in. To verify, check | ||
/// `GIDGoogleUser`'s `hostedDomain` property. | ||
@property(nonatomic, readonly, nullable) NSString *hostedDomain; | ||
|
||
/// The OpenID2 realm of the home server. This allows Google to include the user's OpenID | ||
/// Identifier in the OpenID Connect ID token. | ||
@property(nonatomic, readonly, nullable) NSString *openIDRealm; | ||
|
||
/// Unavailable. Please use `initWithClientID:` or one of the other initializers below. | ||
/// :nodoc: | ||
+ (instancetype)new NS_UNAVAILABLE; | ||
|
||
/// Unavailable. Please use `initWithClientID:` or one of the other initializers below. | ||
/// :nodoc: | ||
- (instancetype)init NS_UNAVAILABLE; | ||
|
||
/// Initialize a `GIDConfiguration` object with a client ID. | ||
/// | ||
/// @param clientID The client ID of the app. | ||
/// @return An initialized `GIDConfiguration` instance. | ||
- (instancetype)initWithClientID:(NSString *)clientID; | ||
|
||
/// Initialize a `GIDConfiguration` object with a client ID and server client ID. | ||
/// | ||
/// @param clientID The client ID of the app. | ||
/// @param serverClientID The server's client ID. | ||
/// @return An initialized `GIDConfiguration` instance. | ||
- (instancetype)initWithClientID:(NSString *)clientID | ||
serverClientID:(nullable NSString *)serverClientID; | ||
|
||
/// Initialize a `GIDConfiguration` object by specifying all available properties. | ||
/// | ||
/// @param clientID The client ID of the app. | ||
/// @param serverClientID The server's client ID. | ||
/// @param hostedDomain The Google Apps domain to be used. | ||
/// @param openIDRealm The OpenID realm to be used. | ||
/// @return An initialized `GIDConfiguration` instance. | ||
- (instancetype)initWithClientID:(NSString *)clientID | ||
serverClientID:(nullable NSString *)serverClientID | ||
hostedDomain:(nullable NSString *)hostedDomain | ||
openIDRealm:(nullable NSString *)openIDRealm NS_DESIGNATED_INITIALIZER; | ||
|
||
@end | ||
|
||
NS_ASSUME_NONNULL_END | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,39 +1,114 @@ | ||
/* | ||
* GIDGoogleUser.h | ||
* Google Sign-In iOS SDK | ||
* Copyright 2022 Google LLC | ||
* | ||
* Copyright 2014 Google Inc. | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* Use of this SDK is subject to the Google APIs Terms of Service: | ||
* https://developers.google.com/terms/ | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
#import <Foundation/Foundation.h> | ||
#import <TargetConditionals.h> | ||
|
||
#if __has_include(<UIKit/UIKit.h>) | ||
#import <UIKit/UIKit.h> | ||
#elif __has_include(<AppKit/AppKit.h>) | ||
#import <AppKit/AppKit.h> | ||
#endif | ||
|
||
@class GIDAuthentication; | ||
|
||
@class GIDConfiguration; | ||
@class GIDSignInResult; | ||
@class GIDToken; | ||
@class GIDProfileData; | ||
|
||
/// This class represents a user account. | ||
NS_ASSUME_NONNULL_BEGIN | ||
|
||
/// This class represents a signed-in user. | ||
@interface GIDGoogleUser : NSObject <NSSecureCoding> | ||
|
||
/// The Google user ID. | ||
@property(nonatomic, readonly) NSString *userID; | ||
@property(nonatomic, readonly, nullable) NSString *userID; | ||
|
||
/// The basic profile data for the user. | ||
@property(nonatomic, readonly, nullable) GIDProfileData *profile; | ||
|
||
/// The OAuth2 scopes granted to the app in an array of `NSString`. | ||
@property(nonatomic, readonly, nullable) NSArray<NSString *> *grantedScopes; | ||
|
||
/// The configuration that was used to sign in this user. | ||
@property(nonatomic, readonly) GIDConfiguration *configuration; | ||
|
||
/// Representation of the Basic profile data. It is only available if | ||
/// `GIDSignIn.shouldFetchBasicProfile` is set and either `-[GIDSignIn signIn]` or | ||
/// `-[GIDSignIn restorePreviousSignIn]` has been completed successfully. | ||
@property(nonatomic, readonly) GIDProfileData *profile; | ||
/// The OAuth2 access token to access Google services. | ||
@property(nonatomic, readonly) GIDToken *accessToken; | ||
|
||
/// The authentication object for the user. | ||
@property(nonatomic, readonly) GIDAuthentication *authentication; | ||
/// The OAuth2 refresh token to exchange for new access tokens. | ||
@property(nonatomic, readonly) GIDToken *refreshToken; | ||
|
||
/// The API scopes granted to the app in an array of `NSString`. | ||
@property(nonatomic, readonly) NSArray *grantedScopes; | ||
/// The OpenID Connect ID token that identifies the user. | ||
/// | ||
/// Send this token to your server to authenticate the user there. For more information on this topic, | ||
/// see https://developers.google.com/identity/sign-in/ios/backend-auth. | ||
@property(nonatomic, readonly, nullable) GIDToken *idToken; | ||
|
||
/// For Google Apps hosted accounts, the domain of the user. | ||
@property(nonatomic, readonly) NSString *hostedDomain; | ||
#pragma clang diagnostic push | ||
#pragma clang diagnostic ignored "-Wdeprecated-declarations" | ||
/// The authorizer for use with `GTLRService`, `GTMSessionFetcher`, or `GTMHTTPFetcher`. | ||
// @property(nonatomic, readonly) id<GTMFetcherAuthorizationProtocol> fetcherAuthorizer; | ||
#pragma clang diagnostic pop | ||
|
||
/// An OAuth2 authorization code for the home server. | ||
@property(nonatomic, readonly) NSString *serverAuthCode; | ||
/// Refresh the user's access and ID tokens if they have expired or are about to expire. | ||
/// | ||
/// @param completion A completion block that takes a `GIDGoogleUser` or an error if the attempt to | ||
/// refresh tokens was unsuccessful. The block will be called asynchronously on the main queue. | ||
- (void)refreshTokensIfNeededWithCompletion:(void (^)(GIDGoogleUser *_Nullable user, | ||
NSError *_Nullable error))completion; | ||
|
||
#if TARGET_OS_IOS || TARGET_OS_MACCATALYST | ||
|
||
/// Starts an interactive consent flow on iOS to add new scopes to the user's `grantedScopes`. | ||
/// | ||
/// The completion will be called at the end of this process. If successful, a `GIDSignInResult` | ||
/// instance will be returned reflecting the new scopes and saved sign-in state will be updated. | ||
/// | ||
/// @param scopes The scopes to ask the user to consent to. | ||
/// @param presentingViewController The view controller used to present `SFSafariViewController` on | ||
/// iOS 9 and 10 and to supply `presentationContextProvider` for `ASWebAuthenticationSession` on | ||
/// iOS 13+. | ||
/// @param completion The optional block that is called on completion. This block will be called | ||
/// asynchronously on the main queue. | ||
- (void)addScopes:(NSArray<NSString *> *)scopes | ||
presentingViewController:(UIViewController *)presentingViewController | ||
completion:(nullable void (^)(GIDSignInResult *_Nullable signInResult, | ||
NSError *_Nullable error))completion | ||
NS_EXTENSION_UNAVAILABLE("The add scopes flow is not supported in App Extensions."); | ||
|
||
#elif TARGET_OS_OSX | ||
|
||
/// Starts an interactive consent flow on macOS to add new scopes to the user's `grantedScopes`. | ||
/// | ||
/// The completion will be called at the end of this process. If successful, a `GIDSignInResult` | ||
/// instance will be returned reflecting the new scopes and saved sign-in state will be updated. | ||
/// | ||
/// @param scopes An array of scopes to ask the user to consent to. | ||
/// @param presentingWindow The window used to supply `presentationContextProvider` for | ||
/// `ASWebAuthenticationSession`. | ||
/// @param completion The optional block that is called on completion. This block will be called | ||
/// asynchronously on the main queue. | ||
- (void)addScopes:(NSArray<NSString *> *)scopes | ||
presentingWindow:(NSWindow *)presentingWindow | ||
completion:(nullable void (^)(GIDSignInResult *_Nullable signInResult, | ||
NSError *_Nullable error))completion; | ||
|
||
#endif | ||
|
||
@end | ||
|
||
NS_ASSUME_NONNULL_END |
Oops, something went wrong.