【发布时间】:2014-04-25 04:38:36
【问题描述】:
目前,我在为给定的 Google Maps Web Services API 查询生成公钥时遇到问题。
documentation 规定必须在 URL 的路径和查询部分使用经过修改的 base-64 HMAC-SHA1 哈希生成签名。
但是,使用此功能并使用this tool 对其进行测试表明它无法正常工作。
+ (NSString *) hmac:(NSString *)data withKey:(NSString *)key{
const char *cKey = [key cStringUsingEncoding:NSUTF8StringEncoding];
const char *cData = [data cStringUsingEncoding:NSUTF8StringEncoding];
unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];
NSString *hash = [HMAC base64EncodedStringWithOptions:0];
hash = [hash stringByReplacingOccurrencesOfString:@"+" withString:@"-"];
hash = [hash stringByReplacingOccurrencesOfString:@"/" withString:@"_"];
return hash;
}
我正在调用此函数,其中数据已被预先编码;
[urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
我哪里出错了?非常感谢任何帮助。
【问题讨论】:
标签: ios objective-c google-maps