您的位置:首页 > 移动开发 > IOS开发

iOS融云获取Token问题,献给iOS融云新手!

2016-01-22 17:16 453 查看
#import "ViewController.h"
#import "AFHTTPRequestOperationManager.h"
#import <CommonCrypto/CommonDigest.h>

#define AppKey @"你应用的Appkey"
#define AppSecret @"你应用的Appsecret"
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
AFHTTPRequestOperationManager *nManage = [AFHTTPRequestOperationManagermanager];
nManage.responseSerializer = [[AFHTTPResponseSerializeralloc]init];
// 随机数,无长度限制
NSString *Nonce = [NSStringstringWithFormat:@"%d",arc4random()];
// 以1970/01/01 GMT为基准时间,返回实例保存的时间与1970/01/01 GMT的时间间隔
NSDate *dateObc = [NSDatedate];
NSString *Timestamp = [NSStringstringWithFormat:@"%d",(int)[dateObctimeIntervalSince1970]];
// 将系统分配的 AppSecret、Nonce (随机数)、Timestamp (时间戳)三个字符串按先后顺序拼接成一个字符串并进行 SHA1哈希计算
NSString *Signature = [selfsha1:[NSStringstringWithFormat:@"%@%@%@",AppSecret,Nonce,Timestamp]];

// 每次请求 API接口时,均需要提供 4个 HTTP Request Header
[nManage.requestSerializersetValue:AppKeyforHTTPHeaderField:@"App-Key"];
[nManage.requestSerializersetValue:NonceforHTTPHeaderField:@"Nonce"];
[nManage.requestSerializersetValue:TimestampforHTTPHeaderField:@"Timestamp"];
[nManage.requestSerializersetValue:SignatureforHTTPHeaderField:@"Signature"];

// 表单参数
NSMutableDictionary *parameter = [NSMutableDictionarydictionary];
parameter[@"userId"] =@"10101011";
parameter[@"name"] =@"张三";
parameter[@"portraitUri"] =@"https://www.baidu.com/img/baidu_jgylogo3.gif";

[nManage POST:@"https://api.cn.rong.io/user/getToken.json"parameters:parametersuccess:^(AFHTTPRequestOperation *operation,id responseObject) {
NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:responseObjectoptions:0error:nil];
NSLog(@"-----UserInfomation---%@",dic);
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
NSLog(@"-----%@---",error);
}];
}

/*使用下面方法需要导入 CommonCrypto/CommonDigest.h*/
// 哈希计算
- (NSString *) sha1:(NSString *)input
{
NSData *data = [inputdataUsingEncoding:NSUTF8StringEncoding];

uint8_t digest[CC_SHA1_DIGEST_LENGTH];

CC_SHA1(data.bytes, (unsignedint)data.length, digest);

NSMutableString *output = [NSMutableStringstringWithCapacity:CC_SHA1_DIGEST_LENGTH *2];

for(int i=0; i<CC_SHA1_DIGEST_LENGTH; i++) {
[output appendFormat:@"%02x", digest[i]];
}
return output;
}
@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 融云