Deprecated: Function split() is deprecated in /home/djaaiekud5jdaza7irevk/wwwroot/article/inc/functions.inc.php on line 10 Deprecated: Function split() is deprecated in /home/djaaiekud5jdaza7irevk/wwwroot/article/inc/functions.inc.php on line 11  微信授权网页登陆,oauth_大家客 - 技术&资讯|

大家客 - 技术&资讯

微信授权网页登陆,oauth

2015-06-14 21:46:28

微信新闻转载

第一步:用户同意授权,获取code
在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。
参数说明

参数 是否必须 说明
appid 是 公众号的唯一标识
redirect_uri 是 授权后重定向的回调链接地址,请使用urlencode对链接进行处理

特此声明:此回调的url,应该是在对应公众号所设置的域名下的访问路径,如果不是,则浏览器回提示出“该链接无法访问”
如果是jsp,可以写成对应的action,
或者(1:“http://www.xiaoyouho.com/login.jsp”
例如(2:”www.xiaoyouho.com/wechatAction_login.do,“


一、进行url编码后,就是如下的链接了https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx4f3aaf0ea47fc448&redirect_uri=http%3a%2f%2fwww.xiaoyouho.com%2flogin.jsp&response_type=code&scope=snsapi_userinfo&state=promotionID#wechat_redirect
在微信浏览器里打开
二、
打开后提示是否登录授权
点击允许后,浏览器会重定向到上面redirect_uri对应的路径,且会加上state对应的参数
在,浏览器里复制 已经跳转的链接 即可查看,
例如(1:
http://www.xiaoyouho.com/login.jsp?code=0212d725f3066e54f482caf6fa79520X&state=promotionID

如果是action,则从定向到对应的action, 那么我们就可以在对应的后台代码中获取咱们需要的参数了“code”(下文接扫)
String code = request.getParameter("code");
String param = request.getParameter("state");
response_type 是 返回类型,请填写code
scope 是 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
state 否 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节

如果是多个参数,“=” 会被编码成,“%3D”
#wechat_redirect 是 无论直接打开还是做页面302重定向时候,必须带此参数




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

code说明 :
code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

通过code获取access_token
首先请注意,这里通过code换取的是一个特殊的网页授权access_token,与基础支持中的access_token(该access_token用于调用其他接口)不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。

如果是重定向到action,则访问以下的链接获取access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

参数 是否必须 说明
appid 是 公众号的唯一标识
secret 是 公众号的appsecret
code 是 填写第一步获取的code参数
grant_type 是 填写为authorization_code

正确时返回的JSON数据包如下:

{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
参数 描述
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_in access_token接口调用凭证超时时间,单位(秒)
refresh_token 用户刷新access_token
openid 用户唯一标识
scope 用户授权的作用域,使用逗号(,)分隔
第三步:拉取用户信息(需scope为 snsapi_userinfo)
如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。


http:GET(请使用https协议)
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

参数说明

参数 描述
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
openid 用户的唯一标识
lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
返回说明

正确时返回的JSON数据包如下:

{
"openid":" OPENID",
" nickname": NICKNAME,
"sex":"1",
"province":"PROVINCE"
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
"privilege":[
"PRIVILEGE1"
"PRIVILEGE2"
],
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

微信行业动态 微信开发 微信营销 微信技术 微信新闻转载

返回首页

大家客 - 技术&资讯