【问题标题】:Error in accessing google reader's Endpoints API访问 google reader 的 Endpoints API 时出错
【发布时间】:2011-11-22 15:08:52
【问题描述】:

我正在尝试在 iPhone APP 中实现谷歌阅读器,目前我已成功收到 sidauth。当我尝试使用 GET 调用 Endpoints API 时出现问题。代码如下:

 ASIHTTPRequest *request = [self requestForAPIEndpoint:@"https://www.google.com/reader/api/0/subscription/list?output=json"];
 [request setDelegate:self];
 [request startAsynchronous];

- (ASIHTTPRequest *) requestForAPIEndpoint: (NSString *) apiEndpoint
{
 ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString: apiEndpoint]];
[request addRequestHeader: @"User-Agent" value: @"YourClient"];
 [request addRequestHeader: @"Cookie" value: signature];
 NSLog(@"Sig = %@",signature);
 [request addRequestHeader: @"Authorization" value: autho];
 return request.
}

授权和签名设置正确。但是,每次我在 - (void)requestFailed:(ASIHTTPRequest *)request 方法中得到回调。我做错了什么?我是否需要注册一些访问 API 的位置并将用户代理设置为该名称??

我修改了 requestForAPIEndpoint 方法如下,然后我也遇到了同样的问题。

- (ASIHTTPRequest *) requestForAPIEndpoint: (NSString *) apiEndpoint
{

NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease];
[properties setValue:signature forKey:NSHTTPCookieValue];
[properties setValue:@"SID" forKey:NSHTTPCookieName];
[properties setValue:@".google.com" forKey:NSHTTPCookieDomain];
[properties setValue:@"1600000000" forKey:NSHTTPCookieExpires];
[properties setValue:@"/" forKey:NSHTTPCookiePath];
NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString: apiEndpoint]];
[request setUseCookiePersistence:NO];
[request setRequestCookies:[NSMutableArray arrayWithObject:cookie]];

[request addRequestHeader: @"User-Agent" value: @"YourClient"];
[request addRequestHeader: @"Authorization" value: autho];
 return request;
} 

【问题讨论】:

    标签: iphone objective-c ios asihttprequest google-reader


    【解决方案1】:

    如果您使用 ClientLogin(通过 Authorization 标头),则无需提供 SID cookie。有关支持的身份验证方案,请参阅http://code.google.com/p/google-reader-api/wiki/Authentication

    此外,Authorization 标头应格式化为 GoogleLogin auth=<auth token>,其中 <auth token> 是来自 ClientLogin 响应的 Auth 值。

    【讨论】:

    • 删除 SID cookie 后,没有任何变化。响应再次失败。
    • 代码中autho 变量的值是多少?预期的格式是 GoogleLogin auth=<auth value>,其中 <auth value> 是您从 ClientLogin 返回的内容。
    • Autho 只是身份验证 ID。当我将其更改为 GoogleLogin auth= 时,它就像魅力一样。非常感谢。如果您可以编辑并将其放入答案中,我将选择此作为已接受。
    猜你喜欢
    • 2018-05-22
    • 1970-01-01
    • 2014-01-31
    • 2014-04-20
    • 2016-12-03
    • 2015-06-08
    • 2015-12-07
    • 2012-03-06
    • 2018-10-12
    相关资源
    最近更新 更多