API鉴权认证流程
所有文档

          舆情服务

          API鉴权认证流程

          使用舆情API时需要进行身份认证和服务认证,认证方法如下:

          百度智能云身份认证

          百度实时舆情订阅API会对每个访问的请求进行身份认证,以保障用户的安全。安全认证采用Access Key与请求签名机制。Access Key由Access Key ID和Secret Access Key组成,均为字符串,由百度智能云官方颁发给用户。其中Access Key ID用于标识用户身份,Access Key Secret 是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密。

          Access Key和Secret Access Key获取方法参见如何获取AK/SK

          对于每个HTTP请求,用户需要使用下文所描述的方式生成一个签名字符串,并将认证字符串放在HTTP请求的Authorization头域里。签名字符串格式如下:

          bce-auth-v{version}/{accessKeyId}/{timestamp}/{expireTime}/{signedHeaders}/{signature}

          有关签名字符串中各字段含义及生成方法请参看签名生成算法

          用户也可以直接调用以下sample code生成签名。

          百度舆情服务认证

          服务认证以请求中token生成为准。token为使用 HMAC 方法生成带有密钥的哈希值,通过user_key和user_secret生成。申请开通舆情服务后,user_key和user_secret由百度智能云提供。生成token的参考代码如下:

          python

          import time
          import hmac
          import hashlib
          timestamp = str(int(time.time()))
          token = hmac.new(api_secret, api_key + timestamp, hashlib.sha1).hexdigest()

          java

           public static void main(String[] args) {
                  String user_key = "d520c05ea2ab40568f119154ac7de67f";   //实际使用时客户需修改为自己的user_key
                  String user_secret = "825a1efa5b29c29272ae8a6c5286fdrf";   //实际使用时客户需修改为自己的user_secret
                  long timestamp = Integer.valueOf(String.valueOf(System.currentTimeMillis()/1000));
                  String data = user_key + timestamp;
                  String hmac = encode(data, user_secret);
                  System.out.println(hmac);
              }
              private static String toHexString(byte[] bytes) {
                  Formatter formatter = new Formatter();
                  for (byte b : bytes) {
                      formatter.format("%02x", b);
                  }
                  return formatter.toString();
              }
              private static String encode(String data, String key) {
                  String token = null;
                  try {
                      SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), "HmacSHA1");
                      Mac mac = Mac.getInstance("HmacSHA1");
                      mac.init(signingKey);
                      token = toHexString(mac.doFinal(data.getBytes()));
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
                  return token;
              }
          上一篇
          开发前必读
          下一篇
          实时舆情