2013-10-29 39 views
1

我正尝试在我的iPhone应用程序中获取gmail &雅虎联系人。从iOS中的gmail帐户只提取我的联系人

对于Gmail,我使用了GTMOauth2.0。我可以看到所有联系人,但是只需要MyContacts组中的联系人。我用下面的代码获取联系人:

-(void)signInToGoogle:(id)sender 
{ 
[self signOutFromGoogle]; 

NSString *keychainItemName = nil; 
NSString *scope = @"https://www.google.com/m8/feeds/contacts/default/full"; 

NSString *clientID = @"CLIENTID"; 
NSString *clientSecret = @"CLIENTSECRETID"; 

SEL finishedSel = @selector(viewController:finishedWithAuth:error:); 

GTMOAuth2ViewControllerTouch *viewController; 
viewController = [GTMOAuth2ViewControllerTouch controllerWithScope:scope 
                  clientID:clientID 
                 clientSecret:clientSecret 
                keychainItemName:keychainItemName 
                  delegate:self 
                finishedSelector:finishedSel]; 

NSDictionary *params = [NSDictionary dictionaryWithObject:@"en" forKey:@"hl"]; 
viewController.signIn.additionalAuthorizationParameters = params; 
NSString *html = @"<html><body bgcolor=silver><div align=center>Loading sign-in page...</div></body></html>"; 
viewController.initialHTMLString = html; 
[[self navigationController] pushViewController:viewController animated:YES]; 
} 

- (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController 
    finishedWithAuth:(GTMOAuth2Authentication *)auth 
      error:(NSError *)error { 
[[NSNotificationCenter defaultCenter] removeObserver:self]; 

if (error != nil) { 

    [processObj removeFromSuperview]; 
    self.view.userInteractionEnabled = YES; 

    NSLog(@"Authentication error: %@", error); 
    NSData *responseData = [[error userInfo] objectForKey:@"data"]; // kGTMHTTPFetcherStatusDataKey 
    if ([responseData length] > 0) { 
     // show the body of the server's authentication failure response 
     NSString *str = [[NSString alloc] initWithData:responseData 
               encoding:NSUTF8StringEncoding]; 
     NSLog(@"%@", str); 
    } 

    self.auth = nil; 
} else { 
    self.auth = auth; 
    [self doAnAuthenticatedAPIFetch]; 
} 
} 

- (void)doAnAuthenticatedAPIFetch { 
NSString *urlStr = @"https://www.google.com/m8/feeds/groups/default/full/Contacts"; 
NSURL *url = [NSURL URLWithString:urlStr]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
[self.auth authorizeRequest:request 
      completionHandler:^(NSError *error) { 
       NSString *output = nil; 
       if (error) { 
        output = [error description]; 
       } else { 
        NSURLResponse *response = nil; 
        NSData *data = [NSURLConnection sendSynchronousRequest:request 
                 returningResponse:&response 
                    error:&error]; 
        if (data) { 
         // API fetch succeeded :Here I am getti 
         output = [[NSString alloc] initWithData:data 
                encoding:NSUTF8StringEncoding]; 
        } else { 
         // fetch failed 
         output = [error description]; 
        } 
       } 
      }]; 
} 

在API我传递“联系人”为一组ID,但它返回错误“群组ID未找到”。我有谷歌文档 https://developers.google.com/google-apps/contacts/v3/?csw=1

但仍不能解决问题。帮助我解决这些问题。

+0

我在做同样的事情,试图让Gmail联系,但没有得到任何解决方案。如果你得到答案,请让我知道它是如何可能的。我和你的代码一样。 – virantporwal

+0

嘿,你让它工作?请回复@virantporwal – va05

回答

相关问题