转自:https://blog.51cto.com/u_14014612/5677760
开放api接口平台:appid、appkey、appsecret
原创小波同学 2022-09-15 00:42:29 博主文章分类:日记本
文章标签 时间戳 客户端 数据 开放平台 开放api接口 文章分类 Java 后端开发 阅读数4314
一、什么是appid、appkey、appsecret
AppID:应用的唯一标识。
AppKey:公匙(相当于账号)。
AppSecret:私匙(相当于密码)
token:令牌(过期失效)
-
app_id:是用来标记你的开发者账号的,是你的用户id,这个id 在数据库添加检索,方便快速查找。
-
app_key 和 app_secret 是一对出现的账号,同一个 app_id 可以对应多个 app_key+app_secret,这样平台就可以分配你不一样的权限,比如 app_key1 + app_secect1 只有只读权限 但是 app_key2+app_secret2 有读写权限…,这样你就可以把对应的权限放给不同的开发者,其中权限的配置都是直接跟app_key 做关联的,app_key 也需要添加数据库检索,方便快速查找。
-
至于为什么 要有app_key + app_secret 这种成对出现的机制呢,因为 要加密,通常 在首次验证(类似登录场景) ,你需要用app_key(标记要申请的权限有哪些) + app_secret(密码,表示你真的拥有这个权限) 来申请一个token,就是我们经常用到的 access_token,之后的数据请求,就直接提供access_token 就可以验证权限了。
简化的场景
- 1、省去 app_id,他默认每一个用户有且仅有一套权限配置,所以直接将 app_id = app_key,然后外加一个app_secret就够了。
- 2、省去app_id 和 app_key,相当于 app_id = app_key = app_secret,通常用于开放性接口的地方,特别是很多地图类api 都采用这种模式,这种模式下,带上app_id 的目的仅仅是统计 某一个用户调用接口的次数而已了。
使用方法
- 1、向第三方服务器请求授权时,带上AppKey和AppSecret(需存在服务器端)
- 2、第三方服务器验证AppKey和AppSecret在DB中有无记录
- 3、如果有,生成一串唯一的字符串(token令牌),返回给服务器,服务器再返回给客户端
- 4、客户端下次请求敏感数据时带上令牌
二、云服务AppId或AppKey和AppSecret生成策略
App key简称API接口验证序号,是用于验证API接入合法性的。接入哪个网站的API接口,就需要这个网站允许才能够接入,如果简单比喻的话:可以理解成是登陆网站的用户名。
App Secret简称API接口密钥,是跟App Key配套使用的,可以简单理解成是密码。
App Key 和 App Secret 配合在一起,通过其他网站的协议要求,就可以接入API接口调用或使用API提供的各种功能和数据。
比如淘宝联盟的API接口,就是淘宝客网站开发的必要接入,淘客程序通过API接口直接对淘宝联盟的数据库调用近亿商品实时数据。做到了轻松维护,自动更新。
2.1 UUID
UUID是指在一台机器在同一时间中生成的数字在所有机器中都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字
UUID由以下几部分的组合:
- 1、当前日期和时间。
- 2、时钟序列。
- 3、全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12),以连字号分为五段形式的36个字符,示例:550e8400-e29b-41d4-a716-446655440000
Java标准类库中已经提供了UUID的API。
2.2 代码实现
- AppSecret 使用SHA-1生成20位byte数组,基本很难重复,再转化为40位16进制数字字符串。