Today's Menu  Portugal
journal and plan nutrition
Z5GoogleLoginController.m
Go to the documentation of this file.
1 //
2 // Z5GoogleLoginController.m
3 // TodaysMenu
4 //
5 // Created by Don Zeek on 4/16/18.
6 // Copyright © 2018 net.dzeek.y2015.ios.portfolio. All rights reserved.
7 //
8 
13 
14 @implementation Z5GoogleLoginController {
15  NSMutableArray *localLoginListeners;
16 }
17 
18 - (id) init
19 {
20  localLoginListeners = [[NSMutableArray alloc] initWithCapacity:10];
21  if (self) {
22  self.signInAttemptComplete = [NSNumber numberWithBool:NO];
23  }
24 
25  return self;
26 }
27 
28 - (void) configureGoogleSignIn
29 {
30  [GIDSignIn sharedInstance].clientID = @"498458703530-8vl37k9m1ibmue9tkhod0imepvsvhttb.apps.googleusercontent.com";
31  [GIDSignIn sharedInstance].delegate = self;
32  [GIDSignIn sharedInstance].scopes = [NSArray arrayWithObjects:kGTLRAuthScopeGmailReadonly,
33  kGTLRAuthScopeDrive,
34  kGTLRAuthScopeCalendarReadonly,
35  nil];
36 }
37 
38 - (void) logOutGoogle
39 {
40  NSLog(@"Z5GoogleLoginController.logOutGoogle: user: %@", _username);
41 
44 
45  _username = nil;
46  NSLog(@"Z5GoogleLoginController.logOutGoogle: done(user: %@)", _username);
47 }
48 
49 #pragma mark - #pragma mark - GIDSignInDelegate
50 
51 - (void)signIn:(GIDSignIn *)signIn
52 didSignInForUser:(GIDGoogleUser *)user
53  withError:(NSError *)error {
54 
55  if (nil == error) {
56  _signedInUser = user;
57  self.signedIn = [NSNumber numberWithBool:YES];
58 
59  NSString *fullName = user.profile.name;
60  _username = fullName;
61  NSLog(@"GoogleLoginController.didSignInForUser: %@", fullName);
62  self.signedIn = [NSNumber numberWithBool:YES];
63 
64  for (id<Z5GoogleLoginListener>ear in localLoginListeners) {
65  [ear signedIn: _signedInUser];
66  }
67  } else if (-4 == [error code]) {
68  NSLog(@"Z5GoogleLoginController.didSignInForUser: no one logged on");
69  } else {
70  NSLog(@"Z5GoogleLoginController.didSignInForUser: error: %ld", (long)[error code]);
71  }
72 }
73 
74 - (void)signIn:(GIDSignIn *)signIn
75 didDisconnectWithUser:(GIDGoogleUser *)user
76  withError:(NSError *)error {
77  // Perform any operations when the user disconnects from app here.
78  NSLog(@"Z5GoogleLoginController.didDisconnectWithUser");
79  self.signedIn = [NSNumber numberWithBool:NO];
80  _username = nil;
81  for (id<Z5GoogleLoginListener>ear in localLoginListeners) {
82  [ear signedOut: _signedInUser];
83  }
84 }
85 
86 - (NSString *)signedInUsername {
87  NSString *ret;
89  if (nil==user) {
90  ret = nil;
91  } else {
92  ret = [[user profile] name];
93  }
94  return ret;
95 }
96 - (GIDProfileData *) getLoggedInProfile
97 {
99  GIDProfileData *ret = nil;
100  if (nil != user) {
101  ret = [user profile];
102  }
103  return ret;
104 }
105 
106 - (void) addLoginListener: (id<Z5GoogleLoginListener>)ear
107 {
108  if (![localLoginListeners containsObject:ear]) {
109  [localLoginListeners addObject:ear];
110  }
111  if (self.signedIn.boolValue) {
112  [ear signedIn: _signedInUser];
113  }
114 }
115 - (void) removeLoginListener: (id<Z5GoogleLoginListener>)ear
116 {
117  [localLoginListeners removeObject:ear];
118 }
119 
120 
121 /*
122 
123  - (void) signInWillDispatch: (GIDSignIn *) signIn
124  error: (NSError *) error
125  {
126  NSLog(@"Goog:GmailDataController.signInWillDispatch: error: %@", error);
127  }
128 
129  */
130 @end
131 
GIDProfileData * profile
Definition: GIDGoogleUser.h:24
void signOut()
GIDGoogleUser * currentUser
Definition: GIDSignIn.h:100
NSString * name
void disconnect()
GIDSignIn * sharedInstance()