请求和验证方式
消息接口: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"                            