我需要在我的应用程序中显示 Garmin 健康数据。Garmin 文档要求开发人员通过 oauth 1.0 连接应用程序和 Garmin 帐户来实现连接。那么,当我使用https://connectapi.garmin.com/oauth-service/oauth/request_token应用 GET/PUSH 请求时?url,它显示以下错误。幸运的是,我在邮递员那里得到了适当的回应。
步骤1 :
邮递员要求:
https://connectapi.garmin.com/oauth-service/oauth/request_token?oauth_consumer_key=3f58949f-e54d-4211-a735-e52cc0ab8f4d&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1531983278&oauth_nonce=cW1Xhs&oauth_version=1.0&oauth_signature=WveKS0cnl7w4ZNknL0WD4f7wBFU=
回复 :
oauth_token=48d03142-ffe3-4adc-ae0e-6c3d7bdd1e18&oauth_token_secret=EY67QDeBqHNvCzlCt0HU5yQ1LkVkGOMK0b4
在我的代码中,我同时应用了 GET/POST 请求,它显示以下错误:
Garmin Connect API 服务器 - 错误报告
HTTP 状态 400 - OAuth 消费者凭据不足。
类型状态报告
消息OAuth 消费者凭据不足。
描述客户端发送的请求在语法上不正确。
Garmin Connect API 服务器
我的代码是这样的:
NSError *error;
NSString *urlString = @"https://connectapi.garmin.com/oauth-service/oauth/request_token?";
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
NSString * parameterString = [NSString stringWithFormat:@"oauth_consumer_key=3f58949f-e54d-4211-a735-e52cc0ab8f4d&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1531983278&oauth_nonce=cW1Xhs&oauth_version=1.0&oauth_signature=pfZzKhniC9zCFZdIx8d0gyIsw3Y"];
//3f58949f-e54d-4211-a735-e52cc0ab8f4d
// NSLog(@"%@",parameterString);
[request setHTTPMethod:@"GET"];
[request setURL:url];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
//Even i apply push and set this data, nothing works!
// [request addValue:@"3f58949f-e54d-4211-a735-e52cc0ab8f4d" forHTTPHeaderField:@"oauth_consumer_key"];
// [request addValue:@"HMAC-SHA1" forHTTPHeaderField:@"oauth_signature_method"];
// [request addValue:@"1531983278" forHTTPHeaderField:@"oauth_timestamp"];
// [request addValue:@"cW1Xhs" forHTTPHeaderField:@"oauth_nonce"];
// [request addValue:@"1.0" forHTTPHeaderField:@"oauth_version"];
// [request addValue:@"pfZzKhniC9zCFZdIx8d0gyIsw3Y" forHTTPHeaderField:@"oauth_signature"];
// [request addValue:@"" forHTTPHeaderField:@"oauth_consumer_key"];
NSData *postData = [parameterString dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:postData];
NSData *finalDataToDisplay = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
NSMutableDictionary *abc = [NSJSONSerialization JSONObjectWithData: finalDataToDisplay
options: NSJSONReadingMutableContainers
error: &error];
我怎样才能克服这个响应问题?有没有人面临类似的问题?有什么想法可以在 iOS Swift/Objective Project 中成功进行 oauth 1.0 身份验证吗?