请求和验证方式

消息接口:https://webapi.kf5.com/kchat/message
上传文件接口:https://webapi.kf5.com/kchat/upload

请求和响应格式:Content-Type: application/json; charset=utf-8
将平台域名添加到 Headers:KF5-Domain: {yourdomain}.kf5.com

验证方式,采用 OAuth1.0
最终用于生成签名的 KEY 为:APP KEY + "&"
参与签名的参数:
oauth_consumer_key // APPID
oauth_signature_method // 目前仅支持:HMAC-SHA1
oauth_timestamp // 秒级别时间戳
oauth_nonce // 随机字符串
oauth_version // 目前仅支持:1.0

// 请求的接口URL
$url = "https://webapi.kf5.com/kchat/message";

// 请求方式
$method = 'POST';

// 自定义IM来源的ID和KEY,在工单系统后台设置页面获取
$appid = '1000001';
$appkey = 'a86e77be8e51858b3599ba71ba8d6087';

// 秒级别时间戳
$timestamp = '1480591219';

// 随机字符串,相同时间戳时,nonce应该保持唯一
$nonce = 'dkj94203u';

// 所有需要参与签名的参数
$params = array(
	'oauth_version' => '1.0',
	'oauth_signature_method' => 'HMAC-SHA1',
	'oauth_timestamp' => $timestamp,
	'oauth_nonce' => $nonce,
	'oauth_consumer_key' => $appid
);

// 对参数按键名升序排列
ksort($params, SORT_STRING);

// 将参数连接成字符串
$params_arr = array();
foreach($params as $key => $value){
    $params_arr[] = $key.'='.$value;
}
$params_str = implode('&', $params_arr);

// 用于生成签名的字符串
$sign_str = $method.'&'.urlencode($url).'&'.urlencode($params_str);

// 用于生成签名的KEY
$key = urlencode($appkey).'&';

// 生成签名字符串(先进行HMAC-SHA1加密,再进行Base64加密,再进行urlencode编码)
$signature = urlencode(base64_encode(hash_hmac('sha1', $sign_str, $key, true)));

// 拼接成添加到请求头中的Authorization
$authorization = sprintf('Authorization: OAuth oauth_consumer_key="%s",oauth_signature_method="HMAC-SHA1",oauth_timestamp="%s",oauth_nonce="%s",oauth_version="1.0",oauth_signature="%s"', $appid, $timestamp, $nonce, $signature);

// 结果:
// Authorization: OAuth oauth_consumer_key="1000001",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1480591219",oauth_nonce="dkj94203u",oauth_version="1.0",oauth_signature="Zc5+ptWxqpY%2FzvoGIM+8kw282cA%3D"