ruby微信開發(fā)介紹

首先我們要知道微信公眾賬號(hào)分兩種片部,訂閱號(hào)和服務(wù)號(hào)涤姊,它們的區(qū)別如下圖:


從上圖可以看出訂閱號(hào)的功能其實(shí)很弱的暇番,如果沒有認(rèn)證的話,連自定義菜單都沒有思喊,尼瑪認(rèn)證還要出300塊壁酬,還不包過!:蘅巍舆乔!

不過,這對(duì)我們學(xué)習(xí)微信公眾賬號(hào)開發(fā)并沒有什么影響剂公,因?yàn)槲⑿盘峁┮粋€(gè)測(cè)試賬號(hào)供我們調(diào)試希俩。

首先我們先進(jìn)入開發(fā)者模式先,這需要我們有一個(gè)獨(dú)立的服務(wù)器纲辽。
然后進(jìn)行配置

url:www.xxx.com/weixin
token: abcd

然后微信服務(wù)器將發(fā)送GET請(qǐng)求到填寫的URL上颜武,GET請(qǐng)求攜帶四個(gè)參數(shù):

signature    微信加密簽名
timestamp    時(shí)間戳
nonce    隨機(jī)數(shù)
echostr

加密/校驗(yàn)流程如下:

  1. 將token、timestamp拖吼、nonce三個(gè)參數(shù)進(jìn)行字典序排序

  2. 將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密

  3. 開發(fā)者獲得加密后的字符串可與signature對(duì)比鳞上,標(biāo)識(shí)該請(qǐng)求來源于微信
    代碼如下:

    def check_weixin_legality
    array = [Rails.configuration.weixin_token, params[:timestamp], params[:nonce]].sort
    render :text => "Forbidden", :status => 403 if params[:signature] != Digest::SHA1.hexdigest(array.join)
    end

然后我們通過這個(gè)www.xxx.com/weixin 接口就可以做很多事情了,根據(jù)你發(fā)送的不同的文字消息可以返回不同的消息绿贞。比如你發(fā)因块,新聞,然后就返回一條圖文信息籍铁,發(fā)音樂涡上,然后就返回一首歌趾断,這個(gè)在方法里面進(jìn)行判斷就好了。

def text_message
  content = params[:xml][:Content]
  case content
  when "音樂"
    render xml: music_reply_message
  when "新聞"
    render xml: news_reply_message
  end
end

然后自定義菜單的實(shí)現(xiàn)吩愧,這需要微信提供的APPID 和APPSECRET
接口調(diào)用請(qǐng)求說明

http請(qǐng)求方式: GET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

由于這里的token有個(gè)憑證有效時(shí)間芋酌,然后我們?nèi)绻看卧L問都去獲取這個(gè)token的話,那實(shí)在是太浪費(fèi)了雁佳,而且微信對(duì)于token的每天的獲取次數(shù)是有限的脐帝。這個(gè)的話用cache來解決。

def get_access_token
  if Rails.cache.read("access_token").nil?
    params = {grant_type: "client_credential", appid:Rails.configuration.weixin_appid, secret: Rails.configuration.weixin_secret}
    response = RestClient.get 'https://api.weixin.qq.com/cgi-bin/token', {params: params}
    errcode = (JSON.parse response)["errcode"]
    @access_token = (JSON.parse response)["access_token"]
    Rails.cache.write("access_token", @access_token, expires_in: 5.minutes)
  else
    @access_token = Rails.cache.read("access_token")
  end
end

未完糖权。堵腹。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末星澳,一起剝皮案震驚了整個(gè)濱河市疚顷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌禁偎,老刑警劉巖腿堤,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異如暖,居然都是意外死亡笆檀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門盒至,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酗洒,“玉大人,你說我怎么就攤上這事妄迁∏薜福” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵登淘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我封字,道長(zhǎng)黔州,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任阔籽,我火速辦了婚禮流妻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘笆制。我一直安慰自己绅这,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布在辆。 她就那樣靜靜地躺著证薇,像睡著了一般度苔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浑度,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天寇窑,我揣著相機(jī)與錄音,去河邊找鬼箩张。 笑死甩骏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的先慷。 我是一名探鬼主播饮笛,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼论熙!你這毒婦竟也來了福青?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤赴肚,失蹤者是張志新(化名)和其女友劉穎素跺,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體誉券,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡指厌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了踊跟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踩验。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖商玫,靈堂內(nèi)的尸體忽然破棺而出箕憾,到底是詐尸還是另有隱情,我是刑警寧澤拳昌,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布袭异,位于F島的核電站,受9級(jí)特大地震影響炬藤,放射性物質(zhì)發(fā)生泄漏御铃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一沈矿、第九天 我趴在偏房一處隱蔽的房頂上張望上真。 院中可真熱鬧,春花似錦羹膳、人聲如沸睡互。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)就珠。三九已至寇壳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嗓违,已是汗流浹背九巡。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蹂季,地道東北人冕广。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像偿洁,于是被迫代替她去往敵國(guó)和親撒汉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理涕滋,服務(wù)發(fā)現(xiàn)睬辐,斷路器,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停宾肺,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,170評(píng)論 22 257
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 10,930評(píng)論 6 13
  • 開發(fā)前首先我們要知道一些概念 各公眾號(hào)區(qū)別:1溯饵、訂閱號(hào):為媒體和個(gè)人提供一種信息傳播方式,主要偏于為用戶傳達(dá)資訊(...
    CoderZS閱讀 3,183評(píng)論 1 19
  • 利刃刻畫出來的臉龐 始終不帶笑容 你看不到血色和溫度 把心解剖 混合在泥土里攪拌后 送給狗 它聞一聞 搖尾不回頭
    關(guān)山克閱讀 194評(píng)論 0 3