我正在尝试从Box用户帐户获取数据。 现在我已生成令牌,但我无法获取根文件夹内容(例如)。
获取令牌,我收到带有此请求的票证:
https://www.box.com/api/1.0/rest?action=get_ticket&api_key=BoxApiKey
之后我在我的应用程序中调用webView来加载此页面:
https://m.box.com/api/1.0/auth/ticket
用户登录成功后,我解析网页并提取令牌。
现在出现问题,我无法获取根文件夹内容。 这就是我尝试使用AFNetworking:
我在AFHTTPClient类中添加此方法(如建议的her)
-(void)setAuthorizationHeaderWithTokenBearer:(NSString *)token
{
[self setDefaultHeader:@"Authorization" value:[NSString stringWithFormat:@"Bearer %@", token]];
}
我的电话:
NSURL *url = [NSURL URLWithString:@"https://www.box.com/api/2.0/folders/0"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
[httpClient setAuthorizationHeaderWithTokenBearer:token];
[httpClient postPath:@"" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *responseStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"Request Successful, response '%@'", responseStr);
} failure:^(AFHTTPRequestOperation *operation, NSError *e) {
NSLog(@"[HTTPClient Error]: %@", e.localizedDescription);
}];
但我有这个本地化的描述:
[HTTPClient Error]: Expected status code in (200-299), got 401
你可以帮我解决这个问题吗?谢谢。
答案 0 :(得分:1)
您遇到了问题,因为您使用的标题样式是OAuth 2,而您拥有的令牌是V1 Auth。
如果您使用此标题
Authorization: Bearer {ACCESS_TOKEN}
您需要通过[OAuth 2 process][1]
但是,如果您使用此标题
Authorization BoxAuth api_key={api key}&auth_token={v1 auth token}
您需要通过V1 auth进程获取令牌,这是您概述的那个。
作为旁注,您应该尝试使用OAuth 2流程,因为V1流程将在今年晚些时候弃用。