文档首页> > API参考> 授权API> 大客户SP简单认证API

大客户SP简单认证API

分享
更新时间: 2019-05-15 18:48

典型场景

当SP需要使用RTC业务平台提供的业务时,首先需要调用“大客户SP简单认证API”完成平台认证。

接口功能

大客户SP简单认证API是提供给SP的一种简单的认证接口,此接口为SP使用RTC业务平台提供业务的准入接口,SP调用此接口获取RTC业务平台的认证。

认证流程如下:

1. SP服务器登录RTC业务平台,请求认证。

2. RTC业务平台首先检测SP请求是否具有合法的授权:

  • 无授权:提醒SP开通RTC业务平台权限。
  • 具有合法的授权:RTC业务平台生成access_token并返回给SP服务器,SP服务器使用access_token向RTC业务平台发送业务请求。
说明:

授权接口采用HTTPS通讯,保证帐号和口令的安全传输。

使用说明

无。

接口类型

表1 大客户SP简单认证API接口类型

请求方法

POST

访问URI

/rest/fastlogin/v1.0

通信协议

HTTPS

请求参数

表2 请求URL参数

参数名称

是否必选

参数类型

默认值

说明

app_key

String(16-32)

Null

唯一标识一个应用,是应用的身份标识。开发者可通过该标识来指定使用哪个应用来调用RTC业务平台开放的能力API。

请提前联系管理员获取。

username

String(1-128)

Null

SP的用户名,用户名可以填写方式如下:

对于语音通话服务包括的语音回呼、语音通知和语音验证码服务,用户名为开发者帐号,完成业务的开通后将以短信的方式通知SP。

当用户名带有+号时,不能直接把+号带在URL请求中,需要做转义,把+号码转义为%2B。

例如:username=%2B8675522227051。

type

number

Null

预留参数,定义用户名类型。

填写为2,表示SP在RTC业务平台上开通的用户名,从管理员处获取。

device_id

String(1-128)

Null

设备标识,最大长度为128个字符,字符可以是大小写字母、数字和特殊字符(_和-)。设备标识由SP分配,最大可以支持100个不同的设备标识。不同的设备标识分配不同的token。

  • 当SP系统按集群部署,每个集群的节点需要独立的access_token时,可配置多个设备标识获取多个access_token。
  • 当SP无需对每个节点分配独立的access_token时,则不需要配置此参数或不携带此参数。
表3 请求Headers参数

参数名称

是否必选

参数类型

默认值

说明

Accept

String

Null

此参数可以不带;若带此参数时只能填:*/*或application/json。

Content-Type

String

Null

固定填application/x-www-form-urlencoded; charset=UTF-8。

Authorization

String(1-16)

Null

明文密码,根据以下要求进行填写

对于语音通话服务包括的语音回呼、语音通知和语音验证码服务,完成业务的开通后将以短信的方式通知SP。

响应参数

表4 响应消息参数说明

参数名称

是否必选

参数类型

默认值

说明

resultcode

String(1-32)

Null

响应结果码。

resultdesc

String(1-256)

Null

结果码描述。

access_token

String(1-128)

Null

访问令牌,用于RTC业务平台对应用进行鉴权。

应用发起调用RTC业务平台能力API时,要携带该令牌,RTC业务平台接到请求后对该令牌进行鉴权,只有鉴权通过后才允许应用调用RTC业务平台开放的能力API。

refresh_token

String(1-128)

Null

刷新令牌。access_token即将过期时使用refresh_token重新向RTC业务平台申请新的access_token,避免access_token过期后业务失败。

expires_in

String(1-32)

Null

访问令牌的认证有效期,单位为秒。当SP认证RTC业务平台超过此时间,则需要重新认证。

userType

String(1-128)

Null

语音通话云服务对应的业务无需关注此参数号码类型:

  • SDK:SDK个人号码
  • ConferenceAccessNum: 会议业务码

使用SP帐号登录时不会返回此参数。

结果码

表5 返回响应结果码说明

响应码

结果码

英文描述

中文描述

处理方法

200

0

Success.

成功。

无需处理。

403

1010002

Invalid request.

非法请求。

根据API接口文档的参数描述和要求,排查已开发的代码中参数设置是否有效。

1010003

Invalid access_token.

无效的app_key。

输入正确的app_key,app_key由管理员提供。

1010019

Frequent login. Repeated login is not allowed within 1 minute.

登录太频繁,一分钟之内不能重复登录。

等待1分钟后再登录。

1010012

Incorrect user name or password.

用户名或密码错误。

输入正确的用户名和密码。

1010008

Unavailable app_key.

app_key不可用。

app_key可能被管理停用,请联系管理员处理。

1010018

User locked.

用户已被锁定。

联系管理员解锁用户。

1010027

The number of device_id applied for by an SP has reached the upper limit.

一个SP申请的device_id达到上限。

“device_id”参数值只能小于等于100。

1020166

The app client ip is not in ip white list.

对端app IP不在白名单列表中。

联系管理员检查IP白名单是否配置正确。

500

1010001

Internal system error.

系统错误。

联系管理员处理。

接口示例

  • 请求示例
POST /rest/fastlogin/v1.0?app_key=app4d2c042e3ea7a31e21005d62&username=%2B8675512345678 HTTP/1.1
Accept: application/json
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Authorization: 123456
Host: service.example.com
Content-Length: 0

说明:

service.example.com为RTC业务平台的域名,此处仅为示例。

  • 响应示例
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"resultcode":"0",
"resultdesc":"Succeed",
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
"expires_in":"172800"
}

代码样例

说明:

本文档中的代码样例均使用JAVA写作。

    /*
     * 该示例只仅体现必选参数,可选参数根据接口文档和实际情况配置。
     * 该示例不体现参数校验,请根据各参数的格式要求自行实现校验功能。
     * 入参为SP在RTC平台的用户名和密码。
     */
    public String fastlogin(String username,String password) throws Exception{

         // 将用户名与密码中的+号转义为%2B。
         username = username.replace("+", "%2B");
         password = password.replace("+", "%2B");

         httpsUtil = new HttpsUtil();

         // 为防止因HTTPS证书认证失败造成API调用失败,需要先忽略证书信任问题。
         httpsUtil.trustAllHttpsCertificates();
         HttpsURLConnection.setDefaultHostnameVerifier(httpsUtil.hv);

         // 构造URL,在基础URL后面携带从管理员处获取的app_key和作为入参传入的用户名。
         urlLogin += "?app_key=" + app_key +"&" + "username="+ username;

         // 构造头域。
         Map<String,String> headers = new HashMap<>();
         // 鉴权头域,携带入参传入的密码。
         headers.put("Authorization",password);

         /*
          * Content-Type为application / x-www-form-urlencoded且请求方法为POST时,
          * 使用doPostFormUrlEncodedGetStatusLine方法构造HTTPS请求并获取响应。
          */
         StreamClosedHttpResponse responseLogin = httpsUtil.doPostFormUrlEncodedGetStatusLine(urlLogin, headers);

         // 响应的消息体写入responseBody。
         responseBody = JsonUtil.jsonString2SimpleObj(responseLogin.getContent(), responseBody.getClass());    
         // 返回响应的status。
         return responseLogin.getStatusLine().toString();       
    }
如果您喜欢这篇文档,您还可以:

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区