本地生成七牛token

article/2025/9/28 17:03:20

由于某些原因 有时候需要本地生成token

原文 地址http://zeeyang.com/2016/06/13/Qiniu-token/?utm_source=tuicool&utm_medium=referral

这是代码地址:provide simple interface to create token,upload file and upload files


 首先我们需要用到三个参数 scopeAccessKeySecretKey

scope 其实就是资源存放的文件夹名字,例如下图的 cmxj

AccessKeySecretKey 在个人面板 -> 个人中心 -> 密钥管理里面就能看到

接下来就可以创建token了,首先我们将上传策略中的 scopedeadline 序列化成json格式,里面的 liveTime 则是token的有效时间,可以以天为单位 

NSMutableDictionary *authInfo = [NSMutableDictionary dictionary];
[authInfo setObject:self.scope forKey:@"scope"];
[authInfo
setObject:[NSNumber numberWithLong:[[NSDate date] timeIntervalSince1970] + self.liveTime * 24 * 3600]forKey:@"deadline"];NSData *jsonData =
[NSJSONSerialization dataWithJSONObject:authInfo options:NSJSONWritingPrettyPrinted error:nil];

再对json序列化后的上传策略进行URL安全的base64编码

NSString *encodedString = [self urlSafeBase64Encode:jsonData];

QN_GTM_Base64 是七牛SDK提供给用户用来处理base64和WebSafeBase64编码的类,然后将里面的 +/ 替换成 _

- (NSString *)urlSafeBase64Encode:(NSData *)text {NSString *base64 =[[NSString alloc] initWithData:[QN_GTM_Base64 encodeData:text] encoding:NSUTF8StringEncoding];base64 = [base64 stringByReplacingOccurrencesOfString:@"+" withString:@"-"];base64 = [base64 stringByReplacingOccurrencesOfString:@"/" withString:@"_"];return base64;
}

然后用secretKey对编码后的上传策略进行HMAC-SHA1加密,并且做安全的base64编码,得到encoded_signed

NSString *encodedSignedString = [self HMACSHA1:self.secretKey text:encodedString];
- (NSString *)HMACSHA1:(NSString *)key text:(NSString *)text {const char *cKey = [key cStringUsingEncoding:NSUTF8StringEncoding];const char *cData = [text cStringUsingEncoding:NSUTF8StringEncoding];char cHMAC[CC_SHA1_DIGEST_LENGTH];CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC length:CC_SHA1_DIGEST_LENGTH];NSString *hash = [self urlSafeBase64Encode:HMAC];return hash;
}

最后将accessKey、encodedSignedString和encodedString拼接,中间用:分开,得到的就是上传的token

NSString *token =[NSString stringWithFormat:@"%@:%@:%@", self.accessKey, encodedSignedString, encodedString];

http://chatgpt.dhexx.cn/article/Nd9JuVXi.shtml

相关文章

手工集成7牛SDK到YII2框架中

手工集成7牛SDK到YII2框架中 7牛地址:qiniu.com 7牛云的产品列表中有:对象存储、自定义数据处理、多媒体处理、融合CDN加速、直播空间等资源。 我们上传图片文件需要的是『对象存储』,关于新建存储空间,这里就不多解释。 http…

7 牛 上传图片

官方文档 https://developer.qiniu.com/kodo/sdk/1283/javascript#2 一开始用了里面的 例子 var observable qiniu.upload(file, key, token, putExtra, config) var subscription observable.subscribe(observer) // 上传开始 // or var subscription observable.subscr…

Android使用7牛云存储

第一次使用这个云存储,话说7牛云存储大有来头!区别于国内外其他云存储,七牛自行研发的全分布式架构解决了其他云存储单一数据中心架构可能存在的风险,同时首创双向加速特性对数据上传下载均加速,使得数据访问速度较传统…

七牛云解决缓存导致的无法及时更新问题

七牛云在后台配置有两个和缓存相关的配置,一个是maxAge值--客户端缓存,一个是cdn缓存 maxAge值和CDN缓存时间的区别? 访问资源链接时,缓存通常分为浏览器缓存和CDN节点缓存。 用户在浏览器中输入资源链接访问时,优先…

工作用哪个邮箱好用?好用的办公邮箱让你放假无烦恼

小伙伴们,已经初五了,这个春节,你有没有被“办公不便”的甜蜜困惑所打扰呢?如果你有这样的困惑,下面以TOMVIP邮箱为例,来了解一下高效办公的小技巧吧,不错过每一个重要邮件,更高质量…

个人工作邮箱怎么申请?工作邮箱有哪些?

关于工作邮箱有哪些品牌,为此以笔者多年的办公经验分享给大家,个人工作邮箱的申请方式其实很简单,今天小编重点分享一下邮箱品牌的选择。 如何选择邮箱 目前市面上几家主流品牌的邮箱我基本都用过。像搜狐、新浪、tom、163的。注册流程都很…

外贸客户邮箱用什么?外贸哪个邮箱好?

许多人在做外贸业务时,可能会遇到被客户拒绝,其实,这不一定是自己业务水平不够,也许是自己的邮箱账号拖累了自己。有的人喜欢用私人邮箱做外贸业务,但是大部分的外贸商家,都觉得私人邮箱是不够正式的。试想…

iPhone添加教育邮箱

iPhone添加教育邮箱 测试环境:iPhone7;iOS11.4.1 当我们申请了一个教育邮箱后,又希望把该邮箱添加到iPhone上,本贴就手把手一步一步教大家完成。 步骤1: 打开手机主屏幕上的设置,往下滑动,找…

企业邮箱注册购买优惠有哪些,企业工作邮箱怎么注册购买?

企业邮箱作为主流的办公工具,一直是企业和公司使用的首选对象,如果没有用过邮箱,并不知道企业邮箱注册购买的流程是什么样的,以及在与商家沟通上面,能争取到哪些优惠,下面的内容教大家怎样注册购买TOM企业邮…

教你快速记住公司工作邮箱格式,再也不用百度“邮箱格式怎么写”啦!

刚步入职场时,经常会遇到一个问题,那就是在发送邮件时,总记不住其他同事的邮箱,邮件地址错误导致发不出去邮件,今天就来带认识一下如何注册到好记邮箱格式! 邮箱账号格式组成: 如上图邮箱账号…

工作电子邮箱怎么注册,电子邮箱格式怎么写?

在工作中,经常会有需要使用电子邮箱的情况,但私人邮箱不方便在日常工作中使用。所以,注册一个工作专用的电子邮箱很有必要,有哪些邮箱适合作为工作电子邮箱呢?TomVIP邮箱就很不错,不仅注册方便,…

工作一般预留什么邮箱? 注册工作邮箱谨防几大雷区!

事实上,关于邮箱的使用价值以及如何能选好并用好它,已成为了众多职场人的困惑。邮箱作为正式且私密性的办公工具,一旦选择通常便不会随意更换。所以无论是初入职场还是想二次选择邮箱的你,注册工作邮箱时一定要掌握选择的真理~ 工作一般预留什么邮箱?对于商务型邮箱选择…

如何申请企业域名工作邮箱?注册企业域名邮箱多少钱?

企业邮箱是员工之间信息共享和高效办公的重要工具,邮件快速收发、安全性成了用户关注的因素。但是TOM企业邮箱的注册区别于普通邮箱,注册方式不一样,让许多企业在申请邮箱时,遇到了很多难题,往往注册不成功或者需要浪费…

工作邮箱怎么注册?企业邮箱有哪些功能?

工作邮箱怎么注册?目前大部分企业给员工企业邮箱作为自己的工作邮箱,而不是自己注册,通常是由企业邮箱管理员或者有相关权限的工作人员负责注册。 企业邮箱是指以公司自己的域名为后缀的电子邮件地址。比如企业邮箱mailzoho.com.cn&#xff0…

ListView用例配合ViewHolder缓存

用android studio 在android 7中运行的 由UIActivityt 和 listview_layout.xml 和 list_item.xml写出来ListView用例 UIActivityt 代码 package com.example.a20200712;import android.database.DataSetObserver; import android.os.Bundle; import android.util.Log; impor…

android 添加一维数组,Android:打造“万能”Adapter与ViewHolder

写在前面 最近一直忙着各种结课大作业,重新看起Android还有种亲切感。前段时间写项目的时候,学习了一个万能Adapter与ViewHolder的写法。说是“万能”其实就是在各种情况下都能通用。 我们知道,在写项目的时候,项目中肯定有很多的…

RecyclerView中ViewHolder重用机制理解,解决网络图片错乱和闪烁问题

🖥 原文转载自: https://blog.csdn.net/xyq046463/article/details/51800095作者:lanceJin. https://www.jianshu.com/p/ef7d0e16d999部分来自作者内容补充 文章目录 1. 概述2. 验证item的变化过程3. 异步网络导致ViewHolder出现图片错乱的原…

CCF CSP认证成绩代替考研复试机试!

最近整理考研资料,慢慢了解到CSP在考研方面还是挺有用的,算是给自己多了些机会。 已参加认证的高校对CSP认证成绩给予高度认可,部分知名院校通过不同方式对CSP认证成绩给予认可,其中包括: (1)…

CCF-CSP认证 202303 500分题解

202303-1 田地丈量&#xff08;矩形面积交&#xff09; 矩形面积交x轴线段交长度*y轴线段交长度 线段交长度&#xff0c;相交的时候是min右端点-max左端点&#xff0c;不相交的时候是0 #include<bits/stdc.h> using namespace std; int n,a,b,ans,x,y,x2,y2; int f(in…