Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
weixin_authorize
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ikcrm_common
weixin_authorize
Commits
5ef7b637
Commit
5ef7b637
authored
Nov 16, 2014
by
lanrion
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #31 from lanrion/OAuth2
oauth2
parents
481e549f
2f9295f7
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
53 additions
and
1 deletions
+53
-1
lib/weixin_authorize.rb
+9
-1
lib/weixin_authorize/api.rb
+1
-0
lib/weixin_authorize/api/oauth.rb
+42
-0
lib/weixin_authorize/client.rb
+1
-0
No files found.
lib/weixin_authorize.rb
View file @
5ef7b637
...
...
@@ -47,7 +47,11 @@ module WeixinAuthorize
end
def
plain_endpoint
"https://api.weixin.qq.com/cgi-bin"
"
#{
api_endpoint
}
/cgi-bin"
end
def
api_endpoint
"https://api.weixin.qq.com"
end
def
file_endpoint
...
...
@@ -58,6 +62,10 @@ module WeixinAuthorize
"https://mp.weixin.qq.com/cgi-bin
#{
url
}
"
end
def
open_endpoint
(
url
)
"https://open.weixin.qq.com
#{
url
}
"
end
end
end
lib/weixin_authorize/api.rb
View file @
5ef7b637
...
...
@@ -4,3 +4,4 @@ require "weixin_authorize/api/custom"
require
"weixin_authorize/api/groups"
require
"weixin_authorize/api/qrcode"
require
"weixin_authorize/api/media"
require
"weixin_authorize/api/oauth"
lib/weixin_authorize/api/oauth.rb
0 → 100644
View file @
5ef7b637
# encoding: utf-8
module
WeixinAuthorize
module
Api
module
Oauth
# 应用授权作用域: scope
# snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),
# snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
# default is snsapi_base
# state 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值
# 如果用户点击同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数redirect_uri?state=STATE
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
# 首先请注意,这里通过code换取的网页授权access_token,与基础支持中的access_token不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
# 微信通过请求 #authorize_url 方法后,会返回一个code到redirect_uri中
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
# refresh_token: 填写通过access_token获取到的refresh_token参数
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
# 如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。
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
private
end
end
end
\ No newline at end of file
lib/weixin_authorize/client.rb
View file @
5ef7b637
...
...
@@ -10,6 +10,7 @@ module WeixinAuthorize
include
Api
::
Groups
include
Api
::
Qrcode
include
Api
::
Media
include
Api
::
Oauth
attr_accessor
:app_id
,
:app_secret
,
:expired_at
# Time.now + expires_in
attr_accessor
:access_token
,
:redis_key
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment