Eric-Guo / wechat

API, command and message handling for WeChat in Rails
MIT License
1.31k stars 372 forks source link

小程序MpApi的initialize 错误 #296

Closed hardywu closed 3 years ago

hardywu commented 3 years ago
module Wechat
  class MpApi < ApiBase
    def initialize(appid, secret, token_file, timeout, skip_verify_ssl, jsapi_ticket_file, qcloud_env, qcloud_token_file, qcloud_token_lifespan)
      super()
      @client = HttpClient.new(Wechat::Api::API_BASE, timeout, skip_verify_ssl)
      @access_token = Token::PublicAccessToken.new(@client, appid, secret, token_file)
      @jsapi_ticket = Ticket::PublicJsapiTicket.new(@client, @access_token, jsapi_ticket_file)
      @qcloud = Qcloud::Token.new(@client, @access_token, qcloud_env, qcloud_token_file, qcloud_token_lifespan)
    end

    ...

  end
end

而在WechatResponder中的初始化函数却输入了错误的参数。

Wechat::MpApi.new(appid, secret, access_token, timeout, skip_verify_ssl, jsapi_ticket, qcloud_token, qcloud_token_lifespan)


module ActionController
  module WechatResponder

    ...

    def get_wechat_api(api_type, corpid, appid, secret, access_token, agentid, timeout, skip_verify_ssl, jsapi_ticket, qcloud_token, qcloud_token_lifespan)
      if api_type && api_type.to_sym == :mp
        Wechat::MpApi.new(appid, secret, access_token, timeout, skip_verify_ssl, jsapi_ticket, qcloud_token, qcloud_token_lifespan)
      elsif corpid.present?
        Wechat::CorpApi.new(corpid, secret, access_token, agentid, timeout, skip_verify_ssl, jsapi_ticket)
      else
        Wechat::Api.new(appid, secret, access_token, timeout, skip_verify_ssl, jsapi_ticket)
      end
    end

    ...

  end
end
Eric-Guo commented 3 years ago

access_token 等于 token_file,抱歉代码里面写的不太清楚,欢迎PR。

access_token: <%= ENV['WEFOCUSIN_WECHAT_ACCESS_TOKEN'] %>

hardywu commented 3 years ago

@Eric-Guo 初始化参数需要9个,但是在get_wechat_api里只传了8个。

Eric-Guo commented 3 years ago

Thanks reporting!, just release 0.12.3 and 0.13.1 to fix.