Wework is a ruby API wrapper for wechat work「企业微信」.
Add this line to your application's Gemfile:
gem 'wework'
And then execute:
$ bundle
Or install it yourself as:
$ gem install wework
Wework.configure do |config|
config.redis = Redis.new(host: ENV['REDIS_HOST'], port: ENV['REDIS_PORT'], db: ENV['REDIS_CACHE_DB']) # redis
config.http_timeout_options = {write: 15, read: 15, connect: 10} # 请求超时
config.expired_shift_seconds = 180 # access token 有效期偏移量 (时间有效期 - 偏移量)
end
1). 初始化套件接口 Wework::Api::Suite
$wework_suite = Wework::Api::Suite.new(
corp_id: ENV['WEWORK_CORPID'], # 应用服务商 CorpID
suite_id: ENV['WEWORK_SUITE_ID'], # SuiteID
encoding_aes_key: ENV['WEWORK_SUITE_ENCODING_AES_KEY'], # EncodingAESKey
suite_token: ENV['WEWORK_SUITE_TOKEN'], # Token
suite_secret: ENV['WEWORK_SUITE_SECRET'] # Secret
)
2). 获取第三方应用接口 Wework::Api::Agent
agent_api = $wework_suite.corp(
corp_id, # 授权企业 CorpID
permanent_code # 永久授权码
).agent(agent_id)
3). 第三方应用回调协议
获取加密数据
encrypt_str = if params[:xml].present?
params[:xml]['Encrypt']
else
Hash.from_xml(request.raw_post)['xml']['Encrypt']
end
#首次校验接口 encrpt_str = params[:echostr]
消息签名
$wework_suite.signature(timestamp, nonce, encrypt_str)
消息解密
$wework_suite.msg_decrypt(encrypt_data)
初始化接口 Wework::Api::Agent
$agent_api = Wework::Api::Agent.new(
corp_id: ENV['WEWORK_CORPID'], # 企业 CorpID
agent_id: ENV['WEWORK_APPID'], # AgentId
secret: ENV['DEMO_APP_SECRET'] # Secret
)
初始化接口 Wework::Api::Contact
$contact_api = Wework::Api::Contact.new(
corp_id: ENV['WEWORK_CORPID'], # 企业 CorpID
secret: ENV['DEMO_APP_SECRET'] # 通讯录同步 Secret
)
初始化
$provider_api = Wework::Api::Provider.new(
corp_id: ENV['WEWORK_PROVIDER_CORPID'], # 应用服务商 CorpID
secret: ENV['WEWORK_PROVIDER_SECRET'], # Secret
token: ENV['WEWORK_PROVIDER_TOKEN'],
encoding_aes_key: ENV['WEWORK_PROVIDER_ENCODING_AES_KEY']
)
回调接口消息加解密参考「第三方应用回调协议」
require "openssl"
CIPHER = 'AES-128-CBC'.freeze
cipher = OpenSSL::Cipher.new(CIPHER)
cipher.decrypt
cipher.key = Base64.decode64(session_key)
cipher.iv = Base64.decode64(iv)
encrypted = Base64.decode64(encryptedData)
data = cipher.update(encrypted) + cipher.final
values = JSON.parse data
Wework::Api::Methods::Department
Wework::Api::Methods::Approval
Wework::Api::Methods::Provider
- Fork
Wework
on GitHub - Make your changes
- Ensure all tests pass (
bundle exec rake
) - Send a pull request
- If we like them we'll merge them
- If we've accepted a patch, feel free to ask for commit access!
Copyright (c) 2018 MyColorway. See LICENSE.txt for further details.