Eric-Guo / wechat

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

微信公众平台问题 #282

Closed RanX12 closed 4 years ago

RanX12 commented 4 years ago

您好,请问您的这个 gem 是只支持发送/接收消息的功能吗?我想做一个微信扫码关注公众号然后登录的功能,现在找不到合适的 gem...

Eric-Guo commented 4 years ago

都支持的,用wechat gem,类似于这样就能拿到用户的信息。

class WechatsController < ActionController::Base
  layout 'wechat'
  wechat_responder

  def applies
    wechat_oauth2 do |userid|
      @user_hash = Wechat.api.user(userid)
      if dc_account = sccsa_account(@user_hash).presence
        if User.find_by(name: dc_account)
          show_applies(dc_account)
        else
          render 'weui/message_box', locals: { title: '配送账号不存在', description: '请联系协会工作人员检查配置账号' }
        end
      else
        render 'weui/message_box', locals: { title: '无配送账号', description: '无法进行此项查询,请联系协会工作人员添加' }
      end
    end
  end
end
RanX12 commented 4 years ago

哦哦,我是个初级 railser,还没开发过微信相关的,我想问问就是我只需要安装 wechat gem,然后通过’微信公众平台命令行‘获取到二维码,通过回调地址获取到用户是否关注公众号(服务号)就可以了是吗?谢谢~

Eric-Guo commented 4 years ago

没那么简单,默认的二维码是进入公众号的,你需要在公众号菜单里面配上Rails 应用的页面,然后在页面上再用上面的代码。

RanX12 commented 4 years ago

好的,订阅号 和 服务号都是可以做吧?

Eric-Guo commented 4 years ago

一样的。(不过有些功能订阅号没有,只有认证的订阅号才有)

RanX12 commented 4 years ago

我看了一下文档, image 认证了的订阅号也没有 “生成带参数二维码”功能,那下面这三个方法也就没用了: image

也就是说明订阅号不能做“网页扫码关注公众号”然后登录/注册的功能了? 但是我看 image 这里的参数是只需要 access_token 就可以了,感觉又可以做。

Eric-Guo commented 4 years ago

试了才知道,另外API只是区分了企业号和公众号,对于服务号和订阅号没有做区分,README也写了

RanX12 commented 3 years ago

您好,我之前看了之后没时间去做,然后现在开始做这个,想问问这里在服务器配置好路由之后,我在微信测试号上配置了http://*****.com/wechat,我先是默认返回的 true,没有去做验证,服务器显示 200 成功了,但是微信这边显示配置失败了, image

image image 我配置的路由是访问的 show,然后如果我要用wechat_responder的话,我控制器应该用 on :?什么来接收这个信息呢?

Eric-Guo commented 3 years ago

必须启用wechat_responder,无需写任何代码即可处理接口配置信息。

RanX12 commented 3 years ago

好的,谢谢,另外我想问一下在README-CN.md没有找到的信息,access_token 是会变的嘛,然后是需要我自己定时通过 url 去获取 access_token,然后存到 redis 的吗?

Eric-Guo commented 3 years ago

用WeChat gem不用自己维护token(任何token),一开始不需要用redis,redis是给多个服务器跑同一个rails app准备的,如果你一开始就预计到写的Rails应用有一秒200 request以上的负载,请直接用go-lang的gin 框架,或者Elixir的phoenix。