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



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

def authorize_url(redirect_uri, scope="snsapi_base", state="weixin")
  uri = encode_url(redirect_uri)
  WeixinAuthorize.open_endpoint("/connect/oauth2/authorize?appid=#{app_id}&redirect_uri=#{uri}&response_type=code&scope=#{scope}&state=#{state}#wechat_redirect")
end

#get_oauth_access_token(code) ⇒ Object

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



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

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拉取用户信息了。



38
39
40
# File 'lib/weixin_authorize/api/oauth.rb', line 38

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

#qrcode_authorize_url(redirect_uri, scope = "snsapi_login", state = "web_wx_login") ⇒ Object

网站应用微信登录授权URL 文档:t.cn/RyZVWEY



8
9
10
11
# File 'lib/weixin_authorize/api/oauth.rb', line 8

def qrcode_authorize_url(redirect_uri, scope="snsapi_login", state="web_wx_login")
  uri = encode_url(redirect_uri)
  WeixinAuthorize.open_endpoint("/connect/qrconnect?appid=#{app_id}&redirect_uri=#{uri}&response_type=code&scope=#{scope}&state=#{state}#wechat_redirect")
end

#refresh_oauth2_token(refresh_token) ⇒ Object

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



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

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