美文网首页
腾讯IM Usersig Ruby版

腾讯IM Usersig Ruby版

作者: 舒官人 | 来源:发表于2020-01-23 00:49 被阅读0次
    module MobileGroupRoomHelper
      APP_ID = "你的APPid"
      APP_KEY = '你的KEY'
    
      def gen_sig(identifier, expire = 604800)
        self.__gen_sig(identifier, expire, nil)
      end
    
      def gen_sig_with_userbuf(identifier, expire, userbuf)
        self.__gen_sig(identifier, expire, userbuf)
      end
    
      def __hmacsha256(identifier, curr_time, expire, base64_userbuf = nil)
        raw_content_to_be_signed = "TLS.identifier:" + identifier.to_s + "\n"\
                                       + "TLS.sdkappid:" + APP_ID.to_s + "\n"\
                                       + "TLS.time:" + curr_time.to_s + "\n"\
                                       + "TLS.expire:" + expire.to_s + "\n"
        if base64_userbuf
          raw_content_to_be_signed += "TLS.userbuf:" + base64_userbuf + "\n"
        end
        Base64.strict_encode64(OpenSSL::HMAC.digest('sha256', APP_KEY, raw_content_to_be_signed))
      end
    
      def __gen_sig(identifier, expire = 180*86400, userbuf = nil)
        curr_time = Time.now.to_i
        m = Hash.new
        base64_userbuf = nil
    
        if nil != userbuf
          base64_userbuf = Base64.encode64(userbuf)
          puts 333
          m["TLS.userbuf"] = base64_userbuf
        end
    
        m["TLS.sig"] = self.__hmacsha256(identifier, curr_time, expire, base64_userbuf)
        m["TLS.expire"]     = expire.to_i
        m["TLS.sdkappid"]   = APP_ID.to_i
        m["TLS.ver"]        = "2.0"
        m["TLS.time"]       = curr_time
        m["TLS.identifier"] = identifier.to_s
    
        raw_sig = m.to_json.gsub(/,/,', ').gsub(/:/,': ')
    
        sig_cmpressed = Zlib::Deflate.deflate(raw_sig)
    
        base64_encode_url(sig_cmpressed)
      end
    
      def base64_encode_url(data)
        Base64.strict_encode64(data).gsub('+', '*').gsub('/', '-').gsub('=', '_')
      end
    end
    

    在使用的地方include调用即可

    原文链接

    相关文章

      网友评论

          本文标题:腾讯IM Usersig Ruby版

          本文链接:https://www.haomeiwen.com/subject/aazizctx.html