ruby微信開発紹介
2220 ワード
まず、微信の公衆アカウントは2種類あり、購読番号とサービス番号があり、それらの違いは以下の図の通りです.
上の図からサブスクリプション番号の機能が実は弱いことがわかりますが、認証がなければカスタムメニューもなく、ニマ認証は300元も出ていて、まだ包んでいません!!!
しかし、これは私たちが微信の公衆アカウントの開発を学ぶのに何の影響もありません.微信は私たちがデバッグするためにテストアカウントを提供しているからです.
まず開発者モデルに入ります.独立したサーバが必要です.そして構成
その後、微信サーバはGET要求を記入したURLに送信し、GET要求は4つのパラメータを携帯する.
暗号化/検証プロセスは次のとおりです. token、timestamp、nonceの3つのパラメータを辞書順に並べ替える は3つのパラメータ文字列を1つの文字列に結合してsha 1暗号化 を行う.開発者が暗号化を取得した文字列はsignatureと比較することができ、この要求が微信コードに由来することを識別するのは以下の通りである: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
そして私たちはこのwww.xxxを通じて.com/weixinインタフェースは多くのことをすることができ、あなたが送信した文字メッセージによって異なるメッセージを返すことができます.例えば、あなたが送って、ニュースを送って、それから図文の情報を返して、音楽を送って、それから歌を返して、これは方法の中で判断すればいいです.
次に、マイクロ信が提供するAPPIDおよびAPPSECRETインタフェース呼び出し要求の説明を必要とするメニューの実装をカスタマイズする.
httpリクエスト方式:GET
ここのtokenには証明書の有効時間があるので、アクセスするたびにこのtokenを取得すると、それは本当に無駄で、微信はtokenの毎日の取得回数に限られています.これはcacheで解決します.
未完...
上の図からサブスクリプション番号の機能が実は弱いことがわかりますが、認証がなければカスタムメニューもなく、ニマ認証は300元も出ていて、まだ包んでいません!!!
しかし、これは私たちが微信の公衆アカウントの開発を学ぶのに何の影響もありません.微信は私たちがデバッグするためにテストアカウントを提供しているからです.
まず開発者モデルに入ります.独立したサーバが必要です.そして構成
url:www.xxx.com/weixin
token: abcd
その後、微信サーバはGET要求を記入したURLに送信し、GET要求は4つのパラメータを携帯する.
signature
timestamp
nonce
echostr
暗号化/検証プロセスは次のとおりです.
そして私たちはこのwww.xxxを通じて.com/weixinインタフェースは多くのことをすることができ、あなたが送信した文字メッセージによって異なるメッセージを返すことができます.例えば、あなたが送って、ニュースを送って、それから図文の情報を返して、音楽を送って、それから歌を返して、これは方法の中で判断すればいいです.
def text_message
content = params[:xml][:Content]
case content
when " "
render xml: music_reply_message
when " "
render xml: news_reply_message
end
end
次に、マイクロ信が提供するAPPIDおよびAPPSECRETインタフェース呼び出し要求の説明を必要とするメニューの実装をカスタマイズする.
httpリクエスト方式:GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
ここのtokenには証明書の有効時間があるので、アクセスするたびにこのtokenを取得すると、それは本当に無駄で、微信はtokenの毎日の取得回数に限られています.これは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
未完...