adium 5915:c71963566b9b: Merged GoogleOAuth2 into adium-1.6 again.

commits at adium.im commits at adium.im
Wed Apr 1 19:12:31 UTC 2015


details:	http://hg.adium.im/adium/rev/c71963566b9b
revision:	5915:c71963566b9b
branch:		adium-1.6
author:		Thijs Alkemade <me at thijsalkema.de>
date:		Wed Apr 01 21:12:13 2015 +0200

Merged GoogleOAuth2 into adium-1.6 again.

diffs (60 lines):

diff -r e1e733a7bac4 -r c71963566b9b Plugins/Purple Service/AIPurpleGTalkAccount.h
--- a/Plugins/Purple Service/AIPurpleGTalkAccount.h	Wed Apr 01 20:32:24 2015 +0200
+++ b/Plugins/Purple Service/AIPurpleGTalkAccount.h	Wed Apr 01 21:12:13 2015 +0200
@@ -17,6 +17,7 @@
 #import "ESPurpleJabberAccount.h"
 
 #define KEY_GTALK_CODE @"GTalk:Code"
+#define KEY_GTALK_UPGRADED_OAUTH2 @"GTalk:OAuth2 Upgraded"
 
 #define ADIUM_GTALK_CLIENT_ID @"853036734951.apps.googleusercontent.com"
 #define ADIUM_GTALK_SECRET @"TSXNUaq34k_0YU7DZT4HbmQd"
diff -r e1e733a7bac4 -r c71963566b9b Plugins/Purple Service/AIPurpleGTalkAccount.m
--- a/Plugins/Purple Service/AIPurpleGTalkAccount.m	Wed Apr 01 20:32:24 2015 +0200
+++ b/Plugins/Purple Service/AIPurpleGTalkAccount.m	Wed Apr 01 21:12:13 2015 +0200
@@ -135,7 +135,8 @@
 		if (refresh_token && refresh_token.length) {
 			[self useRefreshToken:refresh_token];
 		} else {
-			if ([self preferenceForKey:KEY_GTALK_CODE group:GROUP_ACCOUNT_STATUS]) {
+			if ([self preferenceForKey:KEY_GTALK_CODE group:GROUP_ACCOUNT_STATUS] ||
+				[[self preferenceForKey:KEY_GTALK_UPGRADED_OAUTH2 group:GROUP_ACCOUNT_STATUS] boolValue]) {
 				[self requestAccessToken];
 			} else {
 				[adium.interfaceController displayQuestion:AILocalizedString(@"Upgrade Google Talk account", nil)
@@ -220,6 +221,17 @@
 	
 	AILogWithSignature(@"%@", responseDict);
 	
+	if ([responseDict objectForKey:@"error"]) {
+		// Delete the refresh token, so we don't use it again.
+		[[AIKeychain defaultKeychain_error:NULL] deleteGenericPasswordForService:self.service.serviceID
+																		 account:self.UID
+																		   error:NULL];
+		
+		[self setLastDisconnectionError:[NSString stringWithFormat:AILocalizedString(@"Retrieving OAuth token failed: %@", nil), [responseDict objectForKey:@"error_description"]]];
+		[self serverReportedInvalidPassword];
+		return;
+	}
+	
 	if (!self.UID.length) {
 		NSString *jsonWebToken = [responseDict objectForKey:@"id_token"];
 		
@@ -260,6 +272,9 @@
 		return;
 	}
 	
+	[self setPreference:nil forKey:KEY_GTALK_CODE group:GROUP_ACCOUNT_STATUS];
+	[self setPreference:@(YES) forKey:KEY_GTALK_UPGRADED_OAUTH2 group:GROUP_ACCOUNT_STATUS];
+	
 	if ([responseDict objectForKey:@"refresh_token"]) {
 		[[AIKeychain defaultKeychain_error:NULL] deleteGenericPasswordForService:self.service.serviceID
 																		 account:self.UID
@@ -287,7 +302,6 @@
 
 -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
 	[self setLastDisconnectionError:[NSString stringWithFormat:AILocalizedString(@"OAuth authentication failed: %@", nil), error.description]];
-	[self setValue:[NSNumber numberWithBool:YES] forProperty:@"isDisconnecting" notify:NotifyNow];
 }
 
 - (void)retrievePasswordThenConnect




More information about the commits mailing list