修改sign。
键盘里ai回复的bug
This commit is contained in:
@@ -10,6 +10,32 @@
|
||||
|
||||
@implementation KBSignUtils
|
||||
|
||||
static NSString *const KBSignAppId = @"loveKeyboard";
|
||||
static NSString *const KBSignSecret = @"kZJM39HYvhxwbJkG1fmquQRVkQiLAh2H";
|
||||
|
||||
static NSString *KBSignStringFromObject(id obj) {
|
||||
if (!obj || obj == (id)kCFNull) {
|
||||
return nil;
|
||||
}
|
||||
if ([obj isKindOfClass:[NSString class]]) {
|
||||
return (NSString *)obj;
|
||||
}
|
||||
if ([obj isKindOfClass:[NSNumber class]]) {
|
||||
return [(NSNumber *)obj stringValue];
|
||||
}
|
||||
if ([obj isKindOfClass:[NSArray class]] || [obj isKindOfClass:[NSDictionary class]]) {
|
||||
NSJSONWritingOptions options = 0;
|
||||
if (@available(iOS 11.0, *)) {
|
||||
options = NSJSONWritingSortedKeys;
|
||||
}
|
||||
NSData *data = [NSJSONSerialization dataWithJSONObject:obj options:options error:nil];
|
||||
if (data.length > 0) {
|
||||
return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
}
|
||||
}
|
||||
return [obj description];
|
||||
}
|
||||
|
||||
+ (NSString *)urlEncode:(NSString *)value {
|
||||
if (!value) return @"";
|
||||
// 按 application/x-www-form-urlencoded 规则编码(更贴近后端常见实现)
|
||||
@@ -96,4 +122,50 @@
|
||||
return [uuid substringToIndex:length];
|
||||
}
|
||||
|
||||
+ (NSDictionary<NSString *, NSString *> *)signHeadersWithBodyParams:(NSDictionary *)bodyParams {
|
||||
NSString *timestamp = [self currentTimestamp];
|
||||
NSString *nonce = [self generateNonceWithLength:16];
|
||||
|
||||
NSMutableDictionary<NSString *, NSString *> *signParams = [NSMutableDictionary dictionary];
|
||||
if (KBSignAppId.length > 0) {
|
||||
signParams[@"appId"] = KBSignAppId;
|
||||
}
|
||||
if (timestamp.length > 0) {
|
||||
signParams[@"timestamp"] = timestamp;
|
||||
}
|
||||
if (nonce.length > 0) {
|
||||
signParams[@"nonce"] = nonce;
|
||||
}
|
||||
|
||||
if ([bodyParams isKindOfClass:[NSDictionary class]] && bodyParams.count > 0) {
|
||||
[bodyParams enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
|
||||
if (![key isKindOfClass:[NSString class]]) {
|
||||
return;
|
||||
}
|
||||
NSString *value = KBSignStringFromObject(obj);
|
||||
if (value.length == 0) {
|
||||
return;
|
||||
}
|
||||
signParams[(NSString *)key] = value;
|
||||
}];
|
||||
}
|
||||
|
||||
NSString *sign = [self signWithParams:signParams secret:KBSignSecret ?: @""];
|
||||
|
||||
NSMutableDictionary<NSString *, NSString *> *headers = [NSMutableDictionary dictionary];
|
||||
if (sign.length > 0) {
|
||||
headers[@"X-Sign"] = sign;
|
||||
}
|
||||
if (KBSignAppId.length > 0) {
|
||||
headers[@"X-App-Id"] = KBSignAppId;
|
||||
}
|
||||
if (timestamp.length > 0) {
|
||||
headers[@"X-Timestamp"] = timestamp;
|
||||
}
|
||||
if (nonce.length > 0) {
|
||||
headers[@"X-Nonce"] = nonce;
|
||||
}
|
||||
return [headers copy];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user