【问题标题】:Google Contact API - 401 Client ErrorGoogle 联系人 API - 401 客户端错误
【发布时间】:2015-04-13 04:26:33
【问题描述】:

我在使用 Google Contact API 时遇到问题。我正在使用以下代码从 google 帐户中获取所有合同。

但它总是抛出 401 错误。谁能帮帮我?

谢谢。

- (void)finishedWithAuth:(GTMOAuth2Authentication *)auth
               error:(NSError *)error {
if (error) {

    return;
}


if(!error) {

    auth.clientID  =  @"Cient ID";
    auth.clientSecret  = @"Client Secret";
    auth.scope= @"https://www.googleapis.com/auth/contacts.readonly";

    NSString *urlStr = @"https://www.google.com/m8/feeds/contacts/default/full?v=3.0&alt=json&max-results=500";

    NSURL *url = [NSURL URLWithString:urlStr];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"GET"];
    [request setValue:@"3.0" forHTTPHeaderField:@"GData-Version"];
    [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];
                     NSLog(@"%@",output);
                 } else {
                     // fetch failed
                     output = [error description];
                 }
             }
         }];
}

}

【问题讨论】:

    标签: ios objective-c google-plus google-contacts-api


    【解决方案1】:

    这样试试 但是首先你需要从GoogleOAuth 得到Accesstoken 然后再试试。

    NSString *urlstring=[NSString stringWithFormat:@"https://www.google.com/m8/feeds/contacts/default/full?max-results=10000&access_token=%@",[UserDefaults objectForKey:@"AccessToken"]];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:urlstring]];
    [request setHTTPMethod:@"GET"];
    [request setValue:@"3.0" forHTTPHeaderField:@"GData-Version"];
    [request setValue:@"application/atom+xml" forHTTPHeaderField:@"Content-Type"];
    NSHTTPURLResponse *returnresponse = nil;
    NSData *GETReply = [NSURLConnection sendSynchronousRequest:request returningResponse:&returnresponse error:nil];
    NSString *theReply = [[NSString alloc] initWithBytes:[GETReply bytes] length:[GETReply length] encoding: NSUTF8StringEncoding];
    NSData *jsonData = [theReply dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *dict11=[XMLReader dictionaryForXMLData:jsonData error:nil];
    

    作为响应,您将获得XML 数据。所以你想解析XML

    我希望这段代码对你有用。

    【讨论】:

    • 我使用了这样的访问令牌。 NSString* str = auth.accessToken; NSString *urlStr =[NSString stringWithFormat:@"google.com/m8/feeds/contacts/default/…; 但它仍然返回相同的结果。
    • 只需在您的代码中添加这一行 [request setValue:@"application/atom+xml" forHTTPHeaderField:@"Content-Type"];然后尝试在您的代码中错过这一行
    • @adeltahir 请记住,首先您需要获得 google 身份验证,然后才能从 google 获取联系人。
    猜你喜欢
    • 2013-11-11
    • 2017-01-12
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2016-03-15
    相关资源
    最近更新 更多