class Wechat::SNS::AccessToken
Access Token 是 SNS 统一登录访问令牌的封装类。 不同于 Wechat::Common::AccessToken 。
Public Class Methods
第二步:通过code换取网页授权access_token mp.weixin.qq.com/wiki/9/01f711493b5a02f24b04365ac5d8fd95.html#.E7.AC.AC.E4.BA.8C.E6.AD.A5.EF.BC.9A.E9.80.9A.E8.BF.87code.E6.8D.A2.E5.8F.96.E7.BD.91.E9.A1.B5.E6.8E.88.E6.9D.83access_token
Return hash format if success: {
access_token: <ACCESS_TOKEN>, # 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同 expires_in: 7200, # access_token接口调用凭证超时时间,单位(秒) refresh_token: <REFRESH_TOKEN>, # 用户刷新access_token openid: <OPEN_ID>, # 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID scope: <SCOPE>, # 用户授权的作用域,使用逗号(,)分隔 unionid: <UNION_ID> # 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
}
Return hash format if failure: {
errcode: <ERROR_CODE>, errmsg: <ERROR_MESSAGE>
}
# File lib/wechat/sns/access_token.rb, line 86 def self.create(app_id, app_secret, code, grant_type: 'authorization_code') assert_present! :app_id, app_id assert_present! :app_secret, app_secret get_json 'https://api.weixin.qq.com/sns/oauth2/access_token', body: { appid: app_id, secret: app_secret, code: code, grant_type: grant_type } end
附:检验授权凭证(access_token)是否有效 mp.weixin.qq.com/wiki/9/01f711493b5a02f24b04365ac5d8fd95.html#.E9.99.84.EF.BC.9A.E6.A3.80.E9.AA.8C.E6.8E.88.E6.9D.83.E5.87.AD.E8.AF.81.EF.BC.88access_token.EF.BC.89.E6.98.AF.E5.90.A6.E6.9C.89.E6.95.88
Return hash format if success: {
errcode: 0, errmsg: 'ok'
}
Return hash format if failure: {
errcode: 40003, errmsg: 'invalid openid'
}
# File lib/wechat/sns/access_token.rb, line 25 def self.load(access_token, opend_id) assert_present! :access_token, access_token assert_present! :opend_id, opend_id get_json 'https://api.weixin.qq.com/sns/auth', body: { access_token: access_token, openid: opend_id } end
第三步:刷新access_token(如果需要) mp.weixin.qq.com/wiki/9/01f711493b5a02f24b04365ac5d8fd95.html#.E7.AC.AC.E4.B8.89.E6.AD.A5.EF.BC.9A.E5.88.B7.E6.96.B0access_token.EF.BC.88.E5.A6.82.E6.9E.9C.E9.9C.80.E8.A6.81.EF.BC.89
Return hash format if success: {
access_token: <ACCESS_TOKEN>, # 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同 expires_in: 7200, # access_token接口调用凭证超时时间,单位(秒) refresh_token: <REFRESH_TOKEN>, # 用户刷新access_token openid: <OPEN_ID>, # 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID scope: <SCOPE> # 用户授权的作用域,使用逗号(,)分隔
}
Return hash format if failure: {
errcode: <ERROR_CODE>, errmsg: <ERROR_MESSAGE>
}
# File lib/wechat/sns/access_token.rb, line 54 def self.update(app_id, refresh_token) assert_present! :app_id, app_id assert_present! :refresh_token, refresh_token # raise ArgumentError.new('The app_id argument is required.') if app_id.blank? get_json 'https://api.weixin.qq.com/sns/oauth2/refresh_token', body: { appid: app_id, grant_type: 'refresh_token', refresh_token: refresh_token } end