WeChat.Plug.WebPageOAuth2 (wechat v0.8.0) View Source
网页授权
Usage
将下面的代码加到 router
里面:
单一应用的情况:
scope "/wx/oauth2", WeChat.Plug do get "/callback/*path", WebPageOAuth2, client: Client, action: :oauth2_callback get "/*path", WebPageOAuth2, client: Client, action: :oauth2 end
多个应用的情况:
scope "/wx/oauth2/:code_name", WeChat.Plug do get "/callback/*path", WebPageOAuth2, :oauth2_callback get "/*path", WebPageOAuth2, :oauth2 end
服务器角色为
hub
:get "/wx/oauth2/:env/callback/*path", WeChat.Plug.WebPageOAuth2, client: Client, action: :hub_oauth2_callback # or get "/wx/oauth2/:code_name/:env/callback/*path", WeChat.Plug.WebPageOAuth2, :hub_oauth2_callback
服务器角色为
hub_client
:scope "/wx/oauth2", WeChat.Plug do get "/callback/*path", WebPageOAuth2, client: Client, action: :oauth2_callback get "/*path", WebPageOAuth2, client: Client, action: :hub_client_oauth2 end # or scope "/wx/oauth2/:code_name", WeChat.Plug do get "/callback/*path", WebPageOAuth2, :oauth2_callback get "/*path", WebPageOAuth2, :hub_client_oauth2 end
用户在微信进入下面这个链接:
"/wx/oauth2/*path?xx=xx"
# or
"/wx/oauth2/:code_name/*path?xx=xx"
经过 plug
之后,会跳转到微信的网页授权:
"https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"
用户完成授权之后,微信会跳转回 REDIRECT_URI/?code=CODE&state=STATE
,即:
"/wx/oauth2/callback/*path?xx=xx"
# or
"/wx/oauth2/:code_name/callback/*path?xx=xx"
默认的 oauth2_callback
函数拿到 query
里面的 code
换取 access_token
,
成功之后将 openid
和 appid
写入到 session
,之后跳转到路径:
"/*path?xx=xx"