iOS: Google Code d'Authentification
Je suis en train de travailler avec l'authentification de l'utilisateur à utiliser le compte google, il est associé avec. Le problème est que chaque fois que l'utilisateur se connecte via mon application, l'option "Autoriser l'Accès" apparaît toujours sur le Google authentification de vue même j'avais cliqué sur l'Autoriser l'Accès déjà du test précédent. Est-ce normal ou suis-je en train de faire mes codes de mal? Merci de m'aider les gars.
J'ai utilisé les codes suivants pour loggin dans un:
- (IBAction)signIn:(id)sender {
if(!isSignedIn){
[self signOutFromAll];
NSString *keychainItemName = nil;
//save keychain
keychainItemName = kKeychainItemName;
NSString *scope = @"https://www.googleapis.com/auth/plus.me";
NSString *clientID = kClientID;
NSString *clientSecret = kClientSecret;
SEL finishedSel = @selector(viewController:finishedWithAuth:error:);
GTMOAuth2ViewControllerTouch *viewController;
viewController = [GTMOAuth2ViewControllerTouch controllerWithScope:scope
clientID:clientID
clientSecret:clientSecret
keychainItemName:keychainItemName
delegate:self
finishedSelector:finishedSel];
[[self navigationController]pushViewController:viewController animated:YES];
} else {
[self displayAlertWithMessage:@"Currently Signed in."];
} }
- (IBAction)signOut:(id)sender {
[self signOutFromAll];
[self displayAlertWithMessage:@"Signed out."]; }
C'est pour le délégué:
- (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController
finishedWithAuth:(GTMOAuth2Authentication *)auth
error:(NSError *)error{
if(error != nil){
//Authentication failed...
NSLog(@"Authentication error: %@", error);
NSData *responseData = [[error userInfo] objectForKey:@"data"];
if([responseData length] > 0)
NSLog(@"%@", [[[NSString alloc]initWithData:responseData encoding:NSUTF8StringEncoding]autorelease]);
self.auth = nil;
} else {
//Authentication succeeded...
isSignedIn = YES;
self.auth = auth;
}
}
Et awakeFromNib:
- (void)awakeFromNib{
//Fill in the Client ID and Client Secret text fields
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
//First, we'll try to get the saved Google authentication, if any, from the keychain
//Normal applications will hardcode in their client ID and client secret,
//But the sample app allows the user to enter them in a text field, and saves them in the preferences
NSString *clientID = [defaults stringForKey:kGoogleClientIDKey];
NSString *clientSecret = [defaults stringForKey:kGoogleClientSecretKey];
GTMOAuth2Authentication *auth;
auth = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:kKeychainItemName
clientID:clientID
clientSecret:clientSecret];
if (auth.canAuthorize) {
//There is saved google authentication
//self.serviceSegments.selectedSegmentIndex = 0;
}
//Save the authentication object, which holds the auth tokens
self.auth = auth;
[self setAuth:auth];
isSignedIn = self.auth.canAuthorize;
}
Par la façon dont mon de référence pour ces codes est sur ce lien: http://code.google.com/p/gtm-oauth2/wiki/Introduction#Using_the_OAuth_2_Controllers
OriginalL'auteur Aldee | 2012-02-10
Vous devez vous connecter pour publier un commentaire.
de la documentation:
http://code.google.com/p/gtm-oauth2/wiki/Introduction
Donc, à partir de votre code, cela dépend de ce que kKeychainItemName.
Juste pensé que je ferais un commentaire sur ce que j'étais en train de lire la documentation.
OriginalL'auteur GraehamF
Utilisez cette méthode lorsque vous obtenez la oauth objet à enregistrer dans les trousseau
et
avant de faire un appel à l'api, il suffit de vérifier et récupérer le oauth objet à l'aide de cette
et assurez-vous qu'il est oauth objet est authentique, avec l'aide de ce
OriginalL'auteur Umar Farooque
Je sais que c'est une vieille question, mais j'ai rencontré le même problème donc je suis en train d'écrire ma solution, ça pourrait aider quelqu'un d'autre dans l'avenir.
S'avère qu'il n'est pas suffisant de définir auto.auth, vous devez également définir la auto.analyticsService.autorisateur variable
Cela a fait l'affaire pour moi, l'utilisateur n'est plus invité à entrer les informations d'identification.
OriginalL'auteur Radu Lucaciu
OriginalL'auteur Sandip Patel - SM
De mon expérience, ce comportement est normal.
Vous avez des doutes, parce que facebook ne demande à l'utilisateur une fois, si l'utilisateur veut accorder à l'application de droits d'accès du profil de l'utilisateur?
OriginalL'auteur James GD