iOS: Google Authentication Code

Arbeite ich mit authentifizierten Benutzer verwenden Sie das google-Konto er zugeordnet ist. Das problem ist, dass jedesmal, wenn der Benutzer sich anmeldet, durch meine app, die "Zugriff Erlauben" erscheint immer auf die Google-Authentifizierung Sicht, auch hatte ich klickte den Zugriff Erlauben, bereits aus früheren Tests. Ist das normal oder mache ich meine codes falsch? Bitte helft mir Jungs.

Ich habe folgende codes für loggin in:

- (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."]; }

Dies ist für die Delegierten:

- (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;
    }
}

Und 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;
}

Übrigens meine Referenz für diese codes ist auf diesem link: http://code.google.com/p/gtm-oauth2/wiki/Introduction#Using_the_OAuth_2_Controllers

  • Ich habe null-Wert in "GTMOAuth2ViewControllerTouch *viewController" obwohl clientID,clientSecret,keychainItemName korrekt sind.Können Sie explian was ist hier falsch?
InformationsquelleAutor Aldee | 2012-02-10
Schreibe einen Kommentar