微信公众号开发纪要(3)-获取用户openid

项目要求做扫描功能前需要进行用户绑定,不是所有的用户都能盘点扫描。这就要求先获取用户的openid(微信公众号的用户唯一凭证),然后与业务系统的用户信息进行验证和绑定。如何获取用户的openid在开发指引中,微信网页授权章节里,做了详细的介绍。获取用户信息,需要四步。

第一步:用户同意授权,获取code
第二步:通过code换取网页授权access_token
第三步:刷新access_token(如果需要)
第四步:拉取用户信息(需scope为
snsapi_userinfo)

1:用户同意授权,获取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参数对应的授权作用域权限。
这里需要注意的事宜:获取用户授权的接口属于高级接口,个人订阅号是没有该权限的。

测试公众号有这个权限

点击修改,会弹出一个OAuth2.0网页授权页面。这里设置授权回调页面的域名。这里特别注意一定不要输入http://, 只要输入域名即可。

参数说明

2:通过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
参数说明

返回说明

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

{ "access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE" }

到这里已经可以获取openid了,可以用openid和用户信息进行绑定。接下来就可以做调用微信扫一扫的功能了。

原文地址:http://blog.51cto.com/yangxiao/2141548

时间: 2024-10-27 13:56:34

微信公众号开发纪要(3)-获取用户openid的相关文章

微信公众号开发_如何获取用户信息?

如何获取用户信息? sence: 1)有微信服务认证号,并已开通功能:网页服务>>网页账号>>网页授权获取用户基本信息 2)设置:网页授权获取用户基本信息 后面的 修改 ,设置成 www.jianshu.com [注脚1] 3)用户已经关注公众号 实现功能:获取用户信息userinfo. THINK: 网页授权获取用户基本信息 具体而言,网页授权流程分为四步: 1.引导用户进入授权页面同意授权,获取code 2.通过code换取网页授权access_token(与基础支持中的acc

微信公众号开发(二)用户关注

微信公众号开发之用户关注   前面讲了基本配置,如果配置成功,那么现在就进入我们的微信公众号开发之旅吧! 这个旅程应该从哪里开始比较好呢?想想....首先说用户关注吧 !毕竟这是入口. 用户关注公众号可以通过三种方式: 1.扫公众号的二维码 2.搜索公众号的名称 3.扫带参数的二维码,但是第一个用户只能通过前面两种方式关注. 一.扫公众号的二维码 用户扫了二维码之后,点击关注,微信服务器会向我们的服务器发送一串数据(对象形式): reqMap:{ FromUserName:xx, EventKe

微信公众号网页授权登录获取用户基本信息

发布时间:2018-10-24 技术:spring springboot,微信公众号 概述 微信公众号网页授权登录后微信获取用户基本信息,部署即可运行完整demo 详细 代码下载:http://www.demodashi.com/demo/14290.html 一.前言 (1)适合人群 1,JAVA服务端开发人员 2,初级人员开发人员 3,了解spring springboot + maven 3,了解公众号开发 (2)你需要准备什么? 1,积极主动学习 2,微信公众号开发基本流程 3,java

微信公众号开发纪要(2)-微信公众号接入

当搭建好微信公众号开发环境后,先要和微信公众号建立联系.从本质上来说,微信公众号开发就是如何让自己的服务器与微信服务器进行交互的一个过程. 微信服务器就相当于一个转发服务器,终端(手机.Pad等)发起请求至微信服务器,微信服务器然后将请求转发给我们的应用服务器.应用服务器处理完毕后,将响应数据回发给微信服务器,微信服务器再将具体响应信息回复到微信App终端. 通信协议为:HTTP 数据传输格式为:XML 具体的流程如下图所示: 来一张更加直观的图吧: 我们需要做的事情,就是对微信服务器转发的HT

C#微信公众号开发 -- (三)用户关注之后自动回复

通过了上一篇文章之后的微信开发者验证之后,我们就可以做微信公众号的代码开发了. 当我们点击关注某个公众号的时候,有时候会发现他会自动给我们回复一条消息,比如欢迎关注XXX公众号.这个功能其实是在点击关注的时候,用户触发了微信定义的事件,同时微信会返回给我们一个XML数据包,微信官方的解释如下: 推送XML数据包示例: <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName>&

微信公众平台开发(106) 网页获取用户地理位置

关键字:微信公众平台 JSSDK 获取地理位置接口 网页获取用户地理位置 getLocation作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-web-location.html 在这篇微信公众平台开发教程中,我们将介绍如何在网页中获取用户的地理位置信息. 本文分为以下二个部分: 生成JS-SDK权限验证签名 使用地理位置接口获取坐标 一.微信JS-SDK 1. 获得Access Token access token的获得方法在前面有介绍,

微信公众号开发纪要(4)-调用微信扫一扫功能

在微信公众号页面中调用微信扫一扫功能,就是调用微信JS-SDK.让JS-SDK完成调用摄像头扫描,然后我们将扫描结果进行业务操作.微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包.通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微信分享.扫一扫.卡券.支付等微信特有的能力,为微信用户提供更优质的网页体验.如何调用微信JS-SDK,在微信公众平台技术文档中的微信网页开发-->微信JS-SDK说明文档中有详细

C#微信公众号开发——access_token的获取

access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效. 公众号可以使用AppID和AppSecret调用本接口来获取access_token.AppID和AppSecret可在微信公众平台官网-开发者中心页中获得(需要已经成为开发者,且帐号没有异常状态).注意调用所有微信接口时均需使用https协议. 一.获取access_token ///

微信公众号开发及时获取当前用户Openid及注意事项

目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 (四)微信公众号开发之网页授权获取用户基本信息 (五)微信公众号开发之网页中及时获取当前用户Openid及注意事项 前言 这篇主要是承接上篇的网页授权获取用户基本信息的后文,也是对第一种静默授权之后,用户点击公众号内链接时,如何再次取得当前用户的OpenId的大致讲解和一些注意事项. 看过上一篇的小伙伴都知道,我们在用户关注的时候就已经将该用户的基本信息存入数据库中,那么如果