融云在移动端获取token(swift)版

融云在移动端不提供注册, 说是不安全等等原因, 需要在服务器端注册, 然后返回给客户端,但是我们又没有服务器, 因此我们可以用手机模拟服务器发送请求, 这样我们就可以自己注册和登录, 做一个聊天的小应用了.

按照官方文档一步一步来就可以了

本来是在网上找的代码, 麻蛋, 总是401错误,401错误是请求成功了但是参数有问题, 很多代码都写得有问题, 定义的变量不用,该有的变量没写,算了,不吐槽了.上代码

func getToken() {
        // 申请时必要的参数
        let parameters = [
            "userId": "003",
            "name": "003",
            "portraitUri": ""
        ]

        // 请求头(时间,随机数,加密)
        let Timestamp = String(format: "%.0f",NSDate().timeIntervalSince1970)
        let Nonce: String = String(arc4random())
        var sha1 = AppKey + Nonce + Timestamp
        // sha1()是写的一个分类里面的一个方法
        sha1 = (sha1 as NSString).sha1()

        // 网址
        let urlstr = "https://api.cn.rong.io/user/getToken.json"
        // 封装的AFN, 你也可以直接用AFN
        let manage = NetworkTools.shareInstance

        // 键值对应, 前两个在融云注册应用时,官网获取的应用信息
        // 我在上面定义过了, 此处没写
        manage.requestSerializer.setValue(AppKey, forHTTPHeaderField: "App-Key")
        manage.requestSerializer.setValue(AppSecret, forHTTPHeaderField: "appSecret")
        // 其他的几个请求头
        manage.requestSerializer.setValue(Nonce, forHTTPHeaderField: "Nonce")
        manage.requestSerializer.setValue(Timestamp, forHTTPHeaderField: "Timestamp")
        manage.requestSerializer.setValue(sha1, forHTTPHeaderField: "Signature")
        manage.requestSerializer.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")

        // POST发送请求
        manage.POST(urlstr, parameters: parameters, success: { (request, AnyObject) in
            // 这里可以打印出具体信息
            print(AnyObject)
            }) { (request, NSError) in
            print(NSError)
            }
}

OC版加密算法:
新建NSString分类, 命名SHA1
然后NSString+SHA1.h里面

#import <Foundation/Foundation.h>

@interface NSString (SHA1)

- (NSString *)sha1;

@end

然后NSString+SHA1.m里面

#import "NSString+SHA1.h"
#import <CommonCrypto/CommonCrypto.h>

typedef unsigned char *(*MessageDigestFuncPtr)(const void *data, CC_LONG len, unsigned char *md);

static NSString *_getMessageDigest(NSString *string, MessageDigestFuncPtr fp, NSUInteger length) {

    const char *cString = [string UTF8String];

    unsigned char *digest = malloc(sizeof(unsigned char) * length);

    fp(cString, (CC_LONG)strlen(cString), digest);

    NSMutableString *hash = [NSMutableString stringWithCapacity:length * 2];

    for (int i = 0; i < length; ++i) {

        [hash appendFormat:@"%02x", digest[i]];

    }

    free(digest);

    return [hash lowercaseString];
}

@implementation NSString (SHA1)

- (NSString *)sha1 {
    return _getMessageDigest(self, CC_SHA1, CC_SHA1_DIGEST_LENGTH);
}

@end

最后,在swift项目里面桥接OC代码就可以了, 桥接不懂得自己百度下, 如果你已经做了相关工作, 有Bridging-Header文件, 在文件里面直接导入头文件即可.

时间: 2024-09-27 03:49:34

融云在移动端获取token(swift)版的相关文章

web 直播&amp;即时聊天------阿里云、融云

随着直播越来越火,所在公司也打算制作自己的直播,所以去了解了这方面,使用后发现还是有些问题需要记录的. 经过分析,制作直播应该是分为两块来做,即直播与实时评论.这里先去制作实时评论,等直播ok后,也会将相应心得写上来. 我们直播采用了阿里云,评论采用了融云.   其实融云的api还是比较清晰的,只不过web demo只有ng的,个人对ng不是很熟悉,所以只能自己慢慢摸索.   1. 注册帐号,根据提示创建应用,获取appkey 2. 引入sdk(请去官网选择最新版本) <script src=&qu

获取token

问题描述 想自己做个iOS通讯Demo,又想使用授权注册,但是不会获取token,请问token在程序中怎么获取? 解决方案 解决方案二:token在iOS端无法获取,只能通过rest接口获取.解决方案三:那注册用户还是用 asyncRegisterNewAccount...这个方法吗?

融云开启即时通讯云服务的免费时代

中介交易 SEO诊断 淘宝客 云主机 技术大厅 导语:融云宣布率先推出免费的即时通讯云服务,在业界引起不小争议.对广大开发者来说,能免费享受专业的即时通讯云服务无疑是重大利好.但同时,融云也动了友商的奶酪,免费必将对行业秩序带来颠覆式冲击,但确实能推动即时通讯云服务的普及化.毋庸置疑的是,自此,即时通讯云服务的免费时代已然开启,免费或将成为这个新兴行业爆发的一个拐点. "免费的即时通讯云服务,我们当然会拿来测试一下,我们正需要这样的服务."一位接受记者采访的移动互联网创业开发者说. 7

评论:阿里如何从“云”打到“端”?

马云经常在他"不小心"泄露出来的内部邮件里传达些宏伟的战略构想.而在一个多月前的内部邮件中,他详述了阿里今年的战略,用了"从云打到端"这5个字. 所谓"云"和"端"就是Cloud和App,即基于云计算形成的大数据和移动客户端.而上周牢牢占据媒体头条的"融信吞恒生"的报道,就是对这5个字的实盘演练. 来看看阿里目前已成型的云--B端(机构端)小微商户的工商信息.营收额度.信用状况.产品供求.物流售后等数据,加

关于获取token

问题描述 我自己有一个服务端 java的 在客户端有个辅助类用HttpURLConnection连接网址 连我自己的服务器一直有效 连接获取token就报400错误 我确认了字符串 将调试中的请求体放在地址栏里进行连接 返回了我正确token的json串 为什么我用代码连接不行 是连接的方式不对吗? 还是说必须用服务器连接? 我刚才用服务器获取了下 也不好使 在线等急 客服可能是下班了 没反应 解决方案 获取token报400一般是request body里面传的client_id和client

iOS新建的项目,一句代码没写,使用 Cocoapod导入融云以后,编译都过不了,该怎么解决呢?

问题描述 iOS新建的项目,一句代码没写,使用 Cocoapod导入融云以后,编译都过不了,该怎么解决呢? Ld /Users/mudy/Library/Developer/Xcode/DerivedData/MyChat-eklapihtyzzzagfohpydmuedmhfu/Build/Products/Debug-iphonesimulator/MyChat.app/MyChat normal x86_64 cd /Users/mudy/Desktop/MyChat export IPH

浪潮首发面向企业云的高端存储AS18000-E

   背景:8月26日,在2015浪潮存储合作伙伴大会上,浪潮提出"活性+"存储理念,并以"替代.扩展.创新"三大市场策略和相关产品作为支撑.AS18000-E正是这次会上发布的存储新品之一,它面向企业云而设计,具有高可靠.高性能和高扩展的"三高"优势,助力企业部署云环境下的关键数据平台. AS18000-E "互联网+"驱动企业业务向公有.私有或混合云转型,这种"业务上云"的趋势已经对当前IT组织选择解决

即时通讯云服务免费,融云破解APP社交化困局

中介交易 SEO诊断 淘宝客 云主机 技术大厅 在过去的一周里,开发者林迪和他的小伙伴们都通过融云的免费即时通讯云服务接入,顺利实现了自己生活服务类APP的社交化. 不仅实现了单聊功能,本以为会遭遇冷场的群聊功能却意想不到的收到了自己用户的欢迎,三天这个"便宜没商量"的日常群聊小组成员就超过300人,同时带动了超过千人用户的增长."这个成绩超出我们预期."林迪表示. 技术门槛阻碍App社交化梦想 林迪一直想让他的APP实现社交并快速提升人气,除了通过更快的产品更新.

如何获取token值,错误代码如下

问题描述 $.ajax({ url:"https://a1.easemob.com/**/**X/token", type:"POST", /* data: "{ "grant_type":"client_credentials", "client_id":"YXA6RghiIPSQEeS0Af9LbAJWjw", "client_secret":"