WeChat 공개 플랫폼 개발 라이브러리
지원되는 인터페이스:
특징:
사용법 비디오 튜토리얼: WeChat 공개 계정 개발
애플리케이션의 Gemfile에 다음 줄을 추가하세요.
gem 'wechat-gate'
그런 다음 다음을 실행합니다.
$ bundle
또는 다음과 같이 직접 설치하십시오.
$ gem install wechat-gate
작업을 시작하기 전에 WeChat 공개 계정 플랫폼에서 다음 구성을 수행해야 합니다.
Rails 프로젝트 구성 디렉터리에 wechat.yml 파일을 생성하고 공식 계정 정보를 구성합니다.
# 区分不同的环境
eggman:
development:
host: http://wechat-test1.eggman.tv
wechat_id: xxxxxxxxxx
app_id: xxxxxxxxxx
app_secret: xxxxxxxxxx
oauth2_redirect_uri: "http://wechat-test1.eggman.tv/wechat/users/callback"
push_url: "http://wechat-test1.eggman.tv/wechat/push"
push_token: xxxxxxxxxxxxxxxxxxxx
production:
host: https://eggman.tv
wechat_id: xxxxxxxxxx
app_id: xxxxxxxxxxxxxxxxxxxx
app_secret: xxxxxxxxxxxxxxxxxxxxxxxxxx
# 如果不需要多环境支持,也可以这样
app_name:
app_id: <%= ENV['WECHAT_APP_NAME_APP_ID'] %>
app_secret: <%= ENV['WECHAT_APP_NAME_APP_SECRET'] %>
oauth2_redirect_uri: <%= ENV['WECHAT_APP_NAME_OAUTH2_REDIRECT_URI'] %>
그런 다음 ApplicationController에서 읽을 공식 계정의 이름을 지정합니다.
self.wechat_gate_app_name = 'eggman'
백그라운드 API 작업(예: WeChat 사용자 정보 획득 등)
기본적으로 구성은 컨트롤러에서 초기화되었으며 메소드는 wechat_gate_config 이므로 직접 사용하세요.
wechat_gate_config . users # 获取用户列表
wechat_gate_config . user ( 'ONE_OPEN_ID' ) # 获取一个用户的详细信息
wechat_gate_config . access_token # 获取当前access_token
# OAuth 2
wechat_gate_config . oauth2_entrance_url ( scope : "snsapi_userinfo" , state : "CURENT_STATE" ) # 获取当前OAuth2授权入口URL
wechat_gate_config . oauth2_access_token ( "TOKEN" ) # 根据OAuth2返回的TOKEN获取access_token
wechat_gate_config . oauth2_user ( "ACCESS_TOKEN" , "ONE_OPEN_ID" ) # 获取一个用户的信息
wechat_gate_config . medias # 获取素材列表, 参数type: image | video | voice | news (图文)
wechat_gate_config . menu_get # 获取菜单
wechat_gate_config . menu_create ( MENU_HASH ) # 创建菜单
wechat_gate_config . generate_js_request_params ( REFERER_URL ) # 返回JS-SDK的验证参数,供前端JS-SDK使用
물론 구성을 수동으로 초기화하거나 구성 파일의 경로를 지정할 수도 있습니다.
config = WechatGate::Config.new('eggman', '/path/to/what/ever/you/want.yml')
JS_SDK의 access_token과 티켓 모두 여기에서 고려된 만료 시간과 새로 고침 시간 제한이 있으므로 걱정할 필요가 없습니다. 수동으로 새로 고치려면 다음을 수행하세요.
config.refresh_access_token
config.refresh_jsapi_ticket
구성 파일은 erb를 지원합니다.
더 많은 인터페이스와 문서를 보려면 매우 자세하게 작성된 소스 코드를 직접 살펴보시기 바랍니다.
def ticket
url = CGI . unescape ( params [ :url ] ) # 微信中用户访问的页面
@data = wechat_gate_config . generate_js_request_params ( url ) # 生成微信JS-SDK所需的jsapi_ticket,signature等等参数供前段js使用
render content_type : "application/javascript"
end
ticket.js.erb:
var wxServerConfig = <%= @data.to_json.html_safe %>;
<%= params[:callback] %>();
그런 다음 WeChat 페이지에 다음 코드를 소개합니다.
( function ( ) {
var ticket = document . createElement ( "script" ) ;
ticket . src = "http://localhost/api/wechat_ticket/ticket.js?url=" + encodeURIComponent ( window . location . href . split ( '#' ) [ 0 ] ) + "&callback=wxCallback" ;
var s = document . getElementsByTagName ( "script" ) [ 0 ] ;
s . parentNode . insertBefore ( ticket , s ) ;
} ) ( ) ;
먼저 erb를 지원하는 메뉴 구성 파일 config/wechat_menu.yml을 설정합니다. 형식은 WeChat 사용자 정의 메뉴 문서를 참조하세요.
button:
- type: view
name: 我的2
url: <%= @config.oauth2_entrance_url(scope: 'snsapi_userinfo', state: 'profile') %>
- type: view
name: 课程
sub_button:
- type: view
name: 免费课程
url: <%= @config.oauth2_entrance_url(scope: 'snsapi_userinfo', state: 'free') %>
- type: view
name: 付费课程
url: <%= @config.oauth2_entrance_url(scope: 'snsapi_userinfo', state: 'paid') %>
**@config** 변수는 현재 위챗 공용 계정 인스턴스이므로 수정하지 마시고 직접 사용하시기 바랍니다.
그런 다음 rake 작업을 실행합니다.
$rails wechat_gate:create_menu APP_NAME=eggman CONFIG=/path/to/wechat.yml MENU=/path/to/wechat_menu.yml
그 중 CONFIG의 기본값은 config/wechat.yml이고, MENU의 기본값은 config/wechat_menu.yml이며, APP_NAME을 지정해야 합니다.
테스트 추가