荣云tokentoken无效是什么意思?

融云即时通讯云 - 专注为 App 开发者提供 IM 云服务
四大业务场景
精准匹配你的沟通诉求
应用内社交
场景 1应用内社交
满足 App 内的社交沟通需求,提供单群聊、超级群等多种聊天模式,支持红包、图片、语音和小视频,实时消息推送,高度自定义界面,高清音视频通话,有效提升用户粘性和活跃度
场景 2直播互动
提供聊天室互动和内容审核服务,无上限在线人数,亿级消息并发,支持弹幕、 送礼物和点赞等各种消息类型和自定义消息,支持回看,管理灵活,轻松打造极致的直播聊天互动体验
场景 3企业 IM
专为企业客户提供的完整解决方案,覆盖桌面和移动端,设备无缝切换,快速对接多办公系统,支持基于组织架构的企业通讯录,可按需定制,实现企业沟通和办公的高效协同
场景 4商业沟通
满足商家与用户的多场景沟通需求,提供客服能力,提升服务效率,智能机器人,人机互助,开放,开源,快速接入,极简集成,可在客服基础逻辑上进行高度定制,有效降低人力成本,沉淀客户价值
四大部署模式
随你所需,量身定做
提供高级功能和免费基础功能
自助开通,即注册即用
接入成本低,集成快
独立部署的服务集群
资源隔离,更高性能和可靠性
专人维护和监控,业务参数可定制调整
服务集群部署在私有基础设施上
安全指数高,数据可控
资源规模自主调配
遍布全球的数据中心和接入节点
提供最优的通讯质量保证
让出海业务畅通无阻
特点与优势
融云让 120,000 款应用大有所为
6,000 + 万
日均活跃数
2,218 + 亿
日消息峰值
数据中心异地多活
自动水平扩展
日消息峰值 2218 亿
稳定支撑多款亿级产品
无上限用户数量
亿级消息并发
全球多节点
全球多数据中心
和节点服务
为你提供各大洲
稳定的海外链路支持
私有二进制通讯协议
数据全程加密
无状态服务集群
服务、数据、网络
均可动态伸缩
融云为聚力视频提供无人数上限的直播聊天室,让粉丝在看赛事、演唱会时聊得更 high
大剧、原创都有死忠粉儿,土豆视频和融云联手奉上聊天室,边看边吐槽才是王道
融云联合汽车之家提供直播 + 互动的节目形式,为用户呈现最直接的车展现场
最好玩的来疯直播使用融云建立在线沟通,让粉丝和主播一起在线聊着玩,玩着看
携程爱玩借助融云让高尔夫爱好者们在线畅聊,以球会友
你身边的万能服务管家,融云客服为其提供了专业客户服务,方便你与管家实时沟通
融云助力沪江网校打造在线学习移动课堂,为亿万用户提供在线教育服务
融云助力百姓网实现私信功能,用户可通过多设备在百姓网进行全平台交流
企业级合作伙伴
即刻成为融云开发者,让未来大有所为
正如莎士比亚所说 “ 在时间的大钟上,只有两个字 —— 现在 ”浙江荣云资产管理有限公司_百度百科
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
浙江荣云资产管理有限公司
本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
浙江荣云资产管理有限公司于日在浙江省工商行政管理局登记成立。法定代表人孙博,公司经营范围包括实业投资,资产管理,投资管理,投资咨询,经济信息咨询等。  融云SDK查看ServerAPI里面有个获取Token的方法,本以为只要传三个参数就可以。后来发现,在请求头有几个必须要传的参数,否则服务器返回401(未授权)。拿获取Token接口为例子
  如图所示,请求头中包含 : App-Key(应用appkey), Nonce(随机数,不限长度),Timestamp(时间戳from1970),Signature(签名)。签名生成的方法 就是 sha1(appsecret+Nonce+Timestamp) 只有这几个请求头的值都正确了,接口才能正确返回Token。(至于什么是sha1加密,又称安全哈希算法,大家自行谷歌。。。)代码如下:
#import &CommonCrypto/CommonCrypto.h&
@implementation MSTool
single_implementation(MSTool)
//获取随机数
-(NSString *)getRandomNonce
NSInteger randomValue = [self getRandomNumber:100000 to:999999];
[NSString stringWithFormat:@"%ld",randomValue];
//获取时间戳 从1970年
-(NSString *)getTimestamp
NSDate *date = [NSDate date];
NSTimeInterval times =
[date timeIntervalSince1970];
return [NSString stringWithFormat:@"%.0f",times];
//获取从 from 到
to 的随机数
-(NSInteger)getRandomNumber:(NSInteger)from to:(NSInteger)to
return (NSInteger)(from + (arc4random() % (to - from + 1)));
//sha1 加密
-(NSString *)sha1WithKey:(NSString *)key
const char *cstr = [key cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:key.length];
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(data.bytes, data.length, digest);
NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
for(int i=0; i&CC_SHA1_DIGEST_LENGTH; i++) {
[output appendFormat:@"%02x", digest[i]];
//根据appSecret nonce timestamp 获取signature
-(NSString *)getSignatureWithAppSecret:(NSString *)appSecret nonce:(NSString *)nonce timestamp:(NSString *)timestamp
NSString *sha1String = [NSString stringWithFormat:@"%@%@%@",appKey,nonce,timestamp];
return [self sha1WithKey:sha1String];
那么这些参数都有了,服务请求我用的AFN,和其他请求的区别就是设置一下请求头而已,代码如下:
//获取Token的接口   url = @"./user/getToken.json";
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer
= [AFHTTPRequestSerializer serializer];
NSDictionary *dict = @{@"userId":@"1",@"name":@"panzi",@"portraiUri":@"http://qlogo3./qzone/?"};
NSString *appkey = kMSChatAppK
NSString *nonce = [[MSTool sharedMSTool] getRandomNonce];
NSString *timestamp = [[MSTool sharedMSTool] getTimestamp];
NSString *signature = [[MSTool
sharedMSTool]getSignatureWithAppSecret:kMSChatAppSecret nonce:nonce timestamp:timestamp];
NSLog(@"%@",appkey);
NSLog(@"%@",nonce);
NSLog(@"%@",timestamp);
NSLog(@"%@",signature);
 //设置请求头
[manager.requestSerializer setValue:appkey forHTTPHeaderField:@"App-Key"];
[manager.requestSerializer setValue:nonce forHTTPHeaderField:@"Nonce"];
[manager.requestSerializer setValue:timestamp forHTTPHeaderField:@"Timestamp"];
[manager.requestSerializer setValue:signature forHTTPHeaderField:@"Signature"];  //调用POST方法
[manager POST:url parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id
_Nullable responseObject) {
NSLog(@"%@",responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@",error);
看看,其实也不是很难啦,根据这个DEMO在稍微封装一下,就可以支持这种需要Header参数验证的接口了。融云还有好多东西,继续看~~
阅读(...) 评论()推荐文章RECOMMEND
热门文章HOT NEWS
   央视网消息(晚间新闻):如今不少人更换手机越来越频繁,而淘...
厉害了word哥

我要回帖

更多关于 bearer token 是什么 的文章

 

随机推荐