Back

微信 网页获取 当前用户open id 的过程

发布时间: 2017-03-26 15:16:00

经过挖掘, 我们发现,网页是无法通过jssdk 直接获取当前用户在当前公众账号的open id的。 

需要: 

1. 先设置 ”用户网页授权”, 填好服务器的网址。  (进入后台, 寻找 接口能力, 找到“网页授权”, 然后点击修改,就可以修改网址了。 记得修改后,配置nginx服务器,让它按照微信的要求,配置好一个txt文件。 具体的不写了。)

2. 在这里先获得 code, 再获得 openid (跟access_token一起)https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842&token=&lang=zh_CN&pass_ticket=6tkJVoN%2BkZgUDMrETh%2Bf%2FDfKguPxRHn%2FJIBacwY7iDyZDuWotm9qp4R50rQSV%2FYv

这里用到的是 sns_base 这个接口 。  不需要用户点击确认,(下面的链接中, 修改appid是你的公众号id就可以)

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx0496e1f49814fe79&redirect_uri=http%3A%2F%2Fweixincms.touring.com.cn%2Finterface%2Fhome.do%3Fcity_id%3D27%26article_type%3Dyou_hui_xin_xi%26advertisement_type%3Dairport&response_type=code&scope=snsapi_base&state=123#wechat_redirect

在获得code 之后,再调用接口。。。可以直接获得 open_id 和 access token 

第二步:通过code换取网页授权access_token
首先请注意,这里通过code换取的是一个特殊的网页授权access_token,与基础支持中的access_token(该access_token用于调用其他接口)不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
尤其注意:由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。
请求方法

获取code后,请求以下链接获取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" } 

Back