获取 Access Token 1 基础概念 access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要妥善保存,access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新

Similar documents
获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

新・解きながら学ぶJava

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

JavaIO.PDF

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

untitled

EJB-Programming-4-cn.doc

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

untitled

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款


Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

Microsoft Word - 第3章.doc

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

Chapter 9: Objects and Classes

chp6.ppt

Guava学习之Resources

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

Java 1 Java String Date

云数据库 RDS SDK

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

速递易开放平台认证规范

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

untitled

第3章.doc

3.1 num = 3 ch = 'C' 2

<4D F736F F D D0ADD2E9B7D6CEF6CBB5C3F7BCB0B2BFB7D6CAB5CFD6D4B4B4FAC2EB2E646F63>

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

Microsoft Word - ch04三校.doc

untitled

Microsoft Word - Broker.doc

功能实现流程 1 实现流程 以下是简单的 SDK 调用流程, 详细 API 接口请参考接口文档 1.1 初始化 SDK // 声明变量 var zg; // 初始化实例 zg = new ZegoClient(); // 配置必要参数 _config = { "appid": ,

FileMaker 15 ODBC 和 JDBC 指南

天津天狮学院关于修订2014级本科培养方案的指导意见

Java

《大话设计模式》第一章

Microsoft Word - 01.DOC



功能实现流程 1 实现流程 以下是简单的 SDK 调用流程, 详细 API 接口请参考接口文档 1.1 初始化 SDK // 声明变量 var zg; // 初始化实例 zg = new ZegoClient(); // 配置必要参数 zg.config({ appid: appid, // 必填,

Chapter 9: Objects and Classes

使用MapReduce读取XML文件

目 录 / CATALOG 一 桌 面 网 站 接 入 1. JAVASCRIPT 网 页 插 件 接 入 2. JS 代 码 操 作 指 引 3. 网 页 链 接 独 立 页 面 接 入 4. 网 页 链 接 接 入 操 作 指 引 5. 自 定 义 桌 面 网 站 接 入 图 标 颜 色 等 0

untitled

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

FileMaker 16 ODBC 和 JDBC 指南

untitled

Microsoft PowerPoint ShengYang Presentation Slides_240609

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

刷新预热接口API文档

Socket Socket TcpClient Socket.Connect TcpClient.Connect Socket.Send / Receive NetworkStream 6-5

EJB-Programming-3.PDF

优斗士微分销产品使用指南

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

附录J:Eclipse教程

untitled

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

身份认证绑定步骤 : 学生在微信客户端打开应用, 触发微信公众号授权 ( 授权页面提示授权给腾讯微校 ) 微信公众号授权后, 回调跳转到微校身份绑定页面, 输入校园账号 ( 例如学号 ) 以及相应的密码, 微校页面数据发送到微校后台 ( 注 : 微校后台不会保存学生的账号和密码 ), 微校后台把对应

}; "P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ", " " string imagedata; if(0!= read_image("a.jpg",imagedata)) { return -1; } string rsp; ytopen_sdk m_sd

untitled

基于CDIO一体化理念的课程教学大纲设计

Hive:用Java代码通过JDBC连接Hiveserver

Go构建日请求千亿微服务最佳实践的副本

拦截器(Interceptor)的学习

1.5招募说明书(草案)

電機工程系認可證照清單 /7/1

公務員服務法第13條相關解釋彙整表

B1

浙江师范大学2014年度毕业生就业质量报告

目 录 监 管 资 讯 2016 年 全 国 保 险 监 管 工 作 会 议 召 开...3 协 会 动 态 赤 峰 保 险 行 业 协 会 召 开 数 据 统 计 和 信 息 宣 传 总 结 表 彰 会 议...5 赤 峰 市 保 险 行 业 协 会 秘 书 处 召 开 2015 年 度 述 职

同 时, 采 取 提 供 新 闻 线 索 和 素 材 安 排 专 访 等 方 式 主 动 为 新 闻 媒 体 服 务, 为 采 访 报 道 活 动 创 造 便 利 条 件 建 设 网 络 信 息 发 布 平 台 2013 年 9 月 开 通 中 央 纪 委 监 察 部 网 站,2015 年 1 月

時間軸上的竹蓮記憶 學務主任 黃雅彙 我不是竹蓮國小的畢業校友 但對於身為新竹人的我來 說 仔細回想起來 似乎和竹蓮有著一種特別的緣分 對竹蓮國小最初的印象是在小學的時候 猶記得年幼的 我經過一段時日的啦啦隊舞蹈訓練後 老師便帶著我們從學 校步行到竹蓮國小來參加比賽 一踏入竹蓮校門 映入眼簾 的是黑

B1

Microsoft Word - 临政办发6.doc

大陸教育部等6個部門公佈「現代職業教育體系建設規劃 ( 年)」規劃到2015年初步形成現代職業教育體系框架,到2020年基本建成「中國」特色現代職業教育體系

资 讯 速 递 台 基 于 大 数 据 的 学 校 督 导 评 估 系 统 建 设 上 海 市 闵 行 区 人 民 政 府 教 育 督 导 室 ( 摘 要 ) 闵 行 教 育 在 深 化 教 育 改 革 探 索 管 办 评 分 离 的 背 景 下, 把 教 育 督 导 评 估 系 统 建 设 作 为

软件工程文档编制

2 Java 语 言 程 序 设 计 教 程 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

CC213

RxJava

Swing-02.pdf

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / /

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

Microsoft Word - 98長榮甄選入學簡章.doc

三种方法实现Hadoop(MapReduce)全局排序(1)

CHAPTER VC#

实验报告 实验题目 Java 实验 (1) 实验目的 学习 Java 语言的编程 实验准备 直接从网上或从上传作业的网站上下载并安装 JDK

ARP ICMP

数据结构与算法 - Python基础

untitled

Transcription:

获取 Access Token 1 基础概念 access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要妥善保存,access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新 接入方可以使用 app_id 和 server_app_secret 调用本接口来获取 access_token 请注意 : 1. app_id 和 server_app_secret 需要联系 ZEGO 技术支持获得 2. 调用所有接口时均需使用 https 协议 2 请求说明 http 请求方式 : POST/JSON, 需使用 https 服 务 调用频率限

环境国内正式环境海外正式环境国内测试环境海外测试环境 制 1 次 / 秒 1 次 / 秒 1 次 / 秒 1 次 / 秒 请求示例 curl -X POST https://liveroom{appid- api.zego.im/cgi/token (https://liveroom{appid- api.zego.im/cgi/token) -d 'json_str' api.zegocloud.com/cgi/token curl -X POST https://liveroom{appid- (https://liveroom{appid- api.zegocloud.com/cgi/token) -d 'json_str' curl -X POST https://test2-liveroomapi.zego.im/cgi/token (https://test2-liveroomapi.zego.im/cgi/token) -d 'json_str' curl -X POST https://test2-liveroomapi.zegocloud.com/cgi/token (https://test2- liveroom-api.zegocloud.com/cgi/token) -d 'json_str' json_str 内容如下 :

{ "version": 1, "seq": 1, "app_id": 11, "biz_type": 0, "token": 'TOKEN', 3 参数说明 是否 参数名 类型 必须 说明 version Int 是 协议版本号, 默认填 1 seq Int 是 协议序列号, 每次必须请求唯一, 每次请求时步进 1 递增 app_id Int 是 第三方用户唯一凭证 biz_type Int 否 App 业务类型 ;0:live,2:rtv ( 可以不填, 默认为 0) token String 是 即构后台服务认证凭证 token 生成规则说明 :

tokeninfo = '{ "ver": 1, "hash": "adfdkjakka1213aa", "nonce": "1934892311", "expired": 1531393997, // 单位 : 秒 ' 注意这里要先构造 JSON, 再转成字符串 token = base64(tokeninfo) token 字段说明 : 参数名 类型 说明 ver Int 版本号 ; 默认填 1 hash String hash = md5sum(sprintf("%u%s%s%u",app_id,server_ md5sum 最终结果为 32 字节小写 hex 编码 nonce String 随机串,16 bytes expired Int token 失效时间,Unix 时间戳, 单位 : 秒 token 中的 hash 字段生成规则说明 : 参数名 类型 说明 app_id Int App 唯一标识 server_app_secret String server 接口 App 唯一凭证密钥,16 bytes, 请联系技术支持获取

4 返回说明 正常情况下, 会返回下述 JSON 数据包给调用方 : { "code": 0, "data": { "access_token": "c205dytwqtd4zlzjsjbltxy0v3fzyutby1q9zeo0egfjcet 3WVBKSlFGeXh5aGZITjJWYnlBcT0", "expires_in": 7200, "message": "success" 返回参数说明 : 参数名 类型 说明 code Int 返回码 message String 操作结果描述 access_token String 获取到的凭证 expires_in Int 凭证有效时间, 单位 : 秒 错误时会返回错误码等信息,JSON 数据包示例如下 ( 该示例为 server_app_secret 无效错误 ):

{ "code": 40005, "message": "appsecret 错误 " 5 获取 token 示例代码 5.1 Java 示例代码 package demo; import java.io.unsupportedencodingexception; import java.security.*; import java.util.*; import com.alibaba.fastjson.*; public class tokentest { public static void main(string[] args) throws UnsupportedEncodingException { long current_time = System.currentTimeMillis(); // 获取当前 unix 时间戳 long expired_time = current_time+7200; // 过期 unix 时间戳, 单位 : 秒 String appid = 000000000; // Int 类型, 这里填写各自分配的 appid String serversecret = "00000000000000000000000000"; // 这里填写对应的 se rver_app_secret String nonce = "xxxxxxxxx"; // 自定义的随机数 //System.out.println(current_time); //System.out.println(expired_time); // 待加密信息 String originstring = appid + serversecret + nonce + Long.toString(expir ed_time); // 待加密的信息 //System.out.println(originString);

//hash 加密 String hashstring = getmd5(originstring); // 加密后的 hash System.out.println("--hashString--:"+hashString); // 定义一个 tokeninfo json LinkedHashMap hashmap = new LinkedHashMap(); hashmap.put("ver",1); hashmap.put("hash",hashstring); hashmap.put("nonce",nonce); hashmap.put("expired",expired_time); String tokeninfo= JSON.toJSONString(hashMap); //System.out.println("----------hashMap--------"+hashMap); //System.out.println("----------111--------"+tokeninfo); //Base64 加密 final Base64.Encoder encoder = Base64.getEncoder(); //final Base64.Decoder decoder = Base64.getDecoder(); final byte[] textbyte = tokeninfo.getbytes("utf-8"); // 加密 // 解密 final String encodedtext = encoder.encodetostring(textbyte); System.out.println("--token--:"+encodedText); // 生成 MD5 public static String getmd5(string message) { String md5 = ""; try { MessageDigest md = MessageDigest.getInstance("MD5"); // 创建一个 md5 算法对象 byte[] messagebyte = message.getbytes("utf-8"); byte[] md5byte = md.digest(messagebyte); // 获得 MD5 字节数组,16*8=128 位 md5 = bytestohex(md5byte); // 转换为 16 进制字符串 catch (Exception e) { System.out.println("erro md5 creat!!!!"); e.printstacktrace(); return md5;

// 二进制转十六进制 public static String bytestohex(byte[] bytes) { StringBuffer hexstr = new StringBuffer(); int num; for (int i = 0; i < bytes.length; i++) { num = bytes[i]; if(num < 0) { num += 256; if(num < 16){ hexstr.append("0"); hexstr.append(integer.tohexstring(num)); return hexstr.tostring(); /** * 最后, 将生成的 Token 复制到以下 curl -X POST 替换掉其中的 token, 修改对应的 app_id, 然后取请求得到正确的 "access_token" * * */ // curl -X POST https://liveroom{app_id-api.zego.im/cgi/token -d '{"version": 1,"seq": 1,"app_id": 000000000,"biz_type": 0,"token": token' 5.2 php 示例代码

<?php $current_time = time(); // 获取当前时间 $expired_time = $current_time + 7200; // 过期时间, 单位 : 秒 $app_id = 000000000; // Int 类型, 这里填写各自分配的 appid $server_app_secret = "00000000000000000000000000"; // 这里填写对应的 server_app_s ecret $nonce = "xxxxxxxxx"; // 自定义的随机数 // 待加密信息 $origin = $app_id. $server_app_secret. $nonce. $expired_time; //hash 加密 $hash = md5($origin); $token = [ 'ver' => 1, 'hash' => $hash, 'nonce' => $nonce, 'expired' => $expired_time ]; // 定义一个 tokeninfo json $token = json_encode($token); //Base64 加密 $encode_token = base64_encode($token); echo $encode_token; /** * 最后, 将生成的 Token 复制到以下 curl -X POST 替换掉其中的 token, 修改对应的 app_id, 然后取请求得到正确的 "access_token" * * */ // curl -X POST https://liveroom{app_id-api.zego.im/cgi/token -d '{"version": 1,"seq": 1,"app_id": 000000000,"biz_type": 0,"token": token'

5.3 python 示例代码 import time import hashlib import base64 import json def buildtoken(): current_time = int(time.time()) # 当前 unix 时间戳 expired_time = int(current_time + 7200) # 过期 unix 时间戳, 单位 : 秒 print(" 当前时间 : " + str(int(current_time))) print(" 过期时间 : " + str(int(expired_time))) appid = '123456789' # 分配给客户的 appid serversecret = '12345678123456781234567812345678' # 这里填写对应的 server_app _secret nonce = '1234567812345678' # 建议使用随机串 # 待加密信息 astr = appid + serversecret + nonce + str(expired_time) print(" 未 hash 的串 : " + astr) # hash 加密 md5obj = hashlib.md5() md5obj.update(astr.encode(encoding='utf-8')) # hashstr 后的字符串 hashstr = md5obj.hexdigest() print("hashstr 后的字符串 : " + hashstr) # tokeninfo tokeninfo = {'ver':1,'hash':hashstr,"nonce":nonce,"expired":expired_time tokeninfo = json.dumps(tokeninfo) token = base64.b64encode(bytes(tokeninfo,'ascii')) print(token) return token if name == ' main ': buildtoken()

# # 最后, 将生成的 Token 复制到以下 curl -X POST 替换掉其中的 token, 修改对应的 app_id, 然后取请求得到正确的 "access_token" # # curl -X POST https://liveroom{app_id-api.zego.im/cgi/token -d '{"version": 1, "seq": 1,"app_id": 000000000,"biz_type": 0,"token": token'