获取Token
更新时间: 2021/03/28 14:26:21
安全认证签名(Token)是 本地服务端录制 SDK 在加入房间时采用的一种鉴权方式。加入房间时,本地 Linux 服务器需要向网易云信服务端申请 Token;服务器生成 Token 后,再将其传给本地 Linux 服务器。
本文档为您介绍如何生成安全认证签名。
基本流程
本地服务端录制 SDK 需要使用 Token 才能加入房间。获取 Token 的基本流程如下:
-
本地 Linux 服务器调用接口 getRecordSdkUserChecksum,向云信服务器申请 Token。
-
请求成功,云信服务器会将 Token 返回给本地 Linux 服务器。
本地 Linux 服务器通过以上步骤获取 Token 之后,可以携带 Token 加入房间。
注意事项
- 获取 Token 之前,请确认您已经创建了音视频房间,且房间中至少有一位成员。否则调用接口获取 Token 时会返回错误码 414。
- 请在 Token 过期之前及时加入房间,若 Token 已过期,需要重新调用本接口获取新的 Token。
- 本地服务端录制和音视频通话 2.0 通过不同的接口获取 Token,URL 及请求参数均不相同。录制 SDK 加入房间时请确保传参中的 Token 是通过 getRecordSdkUserChecksum 获取的 Record Token。
API 参考
请求 Header 的相关说明请参考服务端 API 请求结构。
注意: getToken 接口的 Content-Type 为 application/x-www-form-urlencoded,服务端其他 API 接口的 Content-Type 为 application/json。
POST https://api.netease.im/nimserver/nrtc/getRecordSdkUserChecksum.action HTTP/1.1
Content-Type:application/x-www-form-urlencoded;charset=utf-8
请求参数
参数名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
channelName | String | 必选 | abc | 绑定的房间名称。 |
type | int | 必选 | 1 | 请设置为 1。 |
uid | Long | 必选 | 123456 | 用户 ID。 |
expireSeconds | Long | 可选 | 640 | Token 有效期。在 Token 有效期内该用户可以多次使用该 Token。单位为秒,最长可设置为30 天。默认为 10 分钟。 |
请求示例
curl 请求示例如下:
curlcurl -X POST -H "AppKey: go9dnk********" -H "Nonce: 4tggger********" -H "CurTime: 1443592222" -H "CheckSum: 9e9db3b6c9ab********************" -H "Content-Type: application/x-www-form-urlencoded" -d 'channelName=xxxx&uid=123456&type=1' 'https://api.netease.im/nimserver/nrtc/getRecordSdkUserChecksum.action'
HttpClient 请求示例如下,此处以 JAVA 为例。
javaimport org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception{
DefaultHttpClient httpClient = new DefaultHttpClient();
String url = "https://api.netease.im/nimserver/nrtc/getRecordSdkUserChecksum.action";
HttpPost httpPost = new HttpPost(url);
String appKey = "94kid09c9ig9k1loimjg012345123456";
String appSecret = "123456789012";
String nonce = "12345";
String curTime = String.valueOf((new Date()).getTime() / 1000L);
String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime);//参考 计算CheckSum的java代码
// 设置请求的header
httpPost.addHeader("AppKey", appKey);
httpPost.addHeader("Nonce", nonce);
httpPost.addHeader("CurTime", curTime);
httpPost.addHeader("CheckSum", checkSum);
httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
// 设置请求的参数
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("uid", "123456"));
nvps.add(new BasicNameValuePair("channelName", "ac"));
nvps.add(new BasicNameValuePair("type", "1"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
// 执行请求
HttpResponse response = httpClient.execute(httpPost);
// 打印执行结果
System.out.println(EntityUtils.toString(response.getEntity(), "utf-8"));
}
}
返回参数
参数名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
code | Number | 200 | 状态码。200 表示成功调用。403 表示未开通音视频通话2.0 或本地服务端录制功能。 414 表示参数错误。 |
cid | Number | 123 | 房间 ID。 |
checksum | String | xxxxx | 服务端返回的 Token。本地服务端录制 SDK 加入房间时,请在 joinChannel 的 token 字段中传入此值。 |
返回示例
JSON格式的返回示例如下:
json"Content-Type": "application/json; charset=utf-8"
{
"code":200,
"cid":123,
"checksum":"xxxxx" //获取到的Token,本地服务端录制 SDK 加入房间时,请在 joinChannel 的 token 字段中传入此值。
}
此文档是否对你有帮助?