Module: WeixinAuthorize::Api::Oauth

Included in:
Client
Defined in:
lib/weixin_authorize/api/oauth.rb

Instance Method Summary collapse

Instance Method Details

#authorize_url(redirect_uri, scope = "snsapi_base", state = "weixin") ⇒ Object

如果用户点击同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数redirect_uri?state=STATE


13
14
15
16
17
# File 'lib/weixin_authorize/api/oauth.rb', line 13

def authorize_url(redirect_uri, scope="snsapi_base", state="weixin")
  require "erb"
  redirect_uri = ERB::Util.url_encode(redirect_uri)
  WeixinAuthorize.open_endpoint("/connect/oauth2/authorize?appid=#{app_id}&redirect_uri=#{redirect_uri}&response_type=code&scope=#{scope}&state=#{state}#wechat_redirect")
end

#get_oauth_access_token(code) ⇒ Object

微信通过请求 #authorize_url 方法后,会返回一个code到redirect_uri中


22
23
24
# File 'lib/weixin_authorize/api/oauth.rb', line 22

def get_oauth_access_token(code)
  WeixinAuthorize.http_get_without_token("/sns/oauth2/access_token?appid=#{app_id}&secret=#{app_secret}&code=#{code}&grant_type=authorization_code", {}, "api")
end

#get_oauth_userinfo(openid, oauth_token, lang = "zh_CN") ⇒ Object

如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。


32
33
34
# File 'lib/weixin_authorize/api/oauth.rb', line 32

def get_oauth_userinfo(openid, oauth_token, lang="zh_CN")
  WeixinAuthorize.http_get_without_token("/sns/userinfo?access_token=#{oauth_token}&openid=#{openid}&lang=#{lang}", {}, "api")
end

#refresh_oauth2_token(refresh_token) ⇒ Object

refresh_token: 填写通过access_token获取到的refresh_token参数


27
28
29
# File 'lib/weixin_authorize/api/oauth.rb', line 27

def refresh_oauth2_token(refresh_token)
  WeixinAuthorize.http_get_without_token("/sns/oauth2/refresh_token?appid=#{app_id}&grant_type=refresh_token&refresh_token=#{refresh_token}", {}, "api")
end