因为认证的公众号有一个功能:获取用户基本信息(UnionID机制):在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。
但是这个功能是需要二次开发的,如果你没有技术能力,可以直接使用它们系统,在关注回复的标题设置一个[访客名称],系统就会自动识别的!
记录一下小程序关联服务号的消息推送功能。
准备工作:
1、获取小程序的appid与appsecret(小程序后台获取)
2、获取服务号的appid与appsecret(服务号后台获取)
3、小程序与服务号绑定在同一个微信开放平台
注意:小程序、服务号、微信开放平台都要认证!!!都要认证!!!都要认证!!!
接下来进入正题。
第一步:获取服务号的access_token
直接通过官方给的接口获取。这里有两个参数,都可以直接获取到
第二步:获取已关注服务号的所有用户的openid
还是通过官方提供的网址获取openid,这里需要一个参数access_token,已从上一步获取到了
第三步:获取已关注用户的用户信息
这一步可获取用户的详细信息,包括昵称、头像、地理位置、unionid等。根据官方网址需要两个参数access_token与openid通过上面两部均已取得。这里后台可以生成一张表用于存储这些数据。
第四步:小程序登录时获取用户的unionid
(1)用户登录小程序时,通过wxlogin()获取code
(2)通过微信官方网址获取unionid,需要的参数为code、appid、appsecret
第五步:服务号的模板消息推送
(1)当服务号与小程序绑定在同一个开放平台时,他们的unionid是一样的,所以我们可以通过unionid这个中间量来进行数据的查找
(2)通过第四步获取的unionid,我们可以查找到当前登录小程序的用户他的服务号的openid。
(3)需要的两个参数都获取到了,我们就可以推送消息模板啦,接下来按照官方的教程 *** 作就行了。
(4)如果想要一次推送给多人可以把接收人的openid存到一个数组中,然后加个循环就行了。
总结:用户必须关注服务号,否则不发收到推送消息。
开发者可通过OpenID来获取用户基本信息。请使用>
接口调用请求说明:
>
> access_token 是调用接口凭证 openid是普通用户的标识,对当前公众号唯一 正常情况下,微信会返回如图JSON数据包给公众号: 微信公众号如何获取用户基本信息及注意事项 错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误): {"errcode":40013,"errmsg":"invalid appid"} 附上常见错误信息: 40014不合法的access_token,请开发者认真比对access_token的有效性(如是否过期),或查看是否正在为恰当的公众号调用接口 40003 不合法的OpenID,请开发者确认OpenID(该用户)是否已关注公众号,或是否是其他公众号的OpenID 附上简单PHP获取用户信息代码,如图。 微信公众号如何获取用户基本信息及注意事项 官方接口要求: 请注意遵守开发者规范,不要用于非法用途,否则将惩罚直至封号。 关于用户及开发者运营数据的规则如下: 您的服务需要收集用户任何数据的,必须事先获得用户的明确同意,且仅应当收集为运营及功能实现目的而必要的用户数据, 同时应当告知用户相关数据收集的目的、范围及使用方式等,保障用户知情权 您收集用户的数据后,必须采取必要的保护措施,防止用户数据被盗、泄漏等 您在特定微信公众号中收集的用户数据仅可以在该特定微信公众号中使用,不得将其使用在该特定微信公众号之外或为其他任何目的进行使用,也不得以任何方式将其提供给他人 如果腾讯认为您收集、使用用户数据的方式,可能损害用户体验,腾讯有权要求您删除相关数据并不得再以该方式收集、使用用户数据 一旦您停止使用本服务,或腾讯基于任何原因终止您使用本服务,您必须立即删除全部因使用本服务而获得的数据(包括各种备份), 且不得再以任何方式进行使用。
在原先dubbo+zookeeper项目中,web模块只暴露Restful接口,各服务模块只暴露duboo接口,此时用户登录后由web项目进行token的鉴权和验证,并通过dubbo的隐式传参将sessionID传递给dubbo服务模块, 拦截器再根据sessionID从Redis中获取用户信息设置到当前线程
然鹅,在springcloud中,各个微服务直接暴露的是restful接口,此时如何让各个微服务获取到当前用户信息呢?最佳的方式就是token了,token作为BS之间的会话标识(一般是原生随机token),同时也可以作为信息的载体传递一些自定义信息(jwt, 即Json web token)。
为了能更清楚的了解本文,需要对spring-security-oauth 及 jwt有一定了解,本文只关注用户信息传递这一块
认证服务器配置 AuthorizationServerConfigurerAdapter
自定义token转换器
CustomJwtAccessTokenConverter
此时按照固定格式访问授权服务器token接口获取token,如图,可以获取到jwt格式的token,并且额外信息nick_name也已经添加
直接解析jwt字符串可以获取到以下信息,即用户名和授权信息
只需要指定和授权服务器一模一样的token store 和token converter
在securiy的过滤器中 OAuth2AuthenticationProcessingFilter 会从token中获取相关信息进行鉴权
源码:
注意,资源服务器主要配置在
ResourceServerConfigurerAdapter
微服务获取jwttoken中的用户信息,两种方式,使用security上下文可以直接获取当前用户名和权限,另一种自定义拦截器获取额外信息。
这个就简单了,获取header头解析验证token
然后获取之前从授权服务器中的添加的 nick_name的额外信息放入线程变量
其中用户上下文类
启动拦截器注册webmvc配置类
在controller中获取用户信息如图
在默认的认证异常如图
假设我们做了全局异常处理,前端希望在token过期时做统一的登录跳转如何做?
实现 AuthenticationEntryPoint 接口重写 commence 方法即可
注意,直接抛出异常并不会走 @RestControllerAdvice , 因为在这里是response直接返回,并没有使用到Controller处理
此时返回我自定义的Response对象,如图
一、通过全局AccessToken获取用户基本信息
1用户关注以及回复消息的时候,均可以获得用户的OpenID
<xml>
<ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName>
<FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName>
<CreateTime>1372307736</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[]]></EventKey>
</xml>
其中的FromUserName就是OpenID
2然后使用access_token接口,请求获得全局AccessToken
>
返回结果:
{
"access_token":"NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ",
"expires_in":7200
}
3再使用全局ACCESS_TOKEN获取OpenID的详细信息
>
返回如下:
{
"subscribe":1,
"openid":"oLVPpjqs2BhvzwPj5A-vTYAX4GLc",
"nickname":"方倍",
"sex":1,
"language":"zh_CN",
"city":"深圳",
"province":"广东",
"country":"中国",
"headimgurl":">
"subscribe_time":1386160805
}
至此,获得用户的基本信息。
二、通过OAuth20方式d出授权页面获得用户基本信息
1首先配置回调域名
2构造请求url如下:
>
页面URL中的
scope=snsapi_userinfo表示应用授权作用域为请求用户信息
★如果使用别人的AppID和AppSecret,那么获得的OpenID是那个有高级接口权限的服务号的,这里可以通过消息回复,获取本公众账号下的OpenID,带入回调中,与另一个OpenID进行关联
>
将该链接回复给关注用户,用户点击后,d出应用授权界面
3回调页面得到链接如下,回调url中将包含参数code
>
或者>
4再使用code换取oauth2的授权access_token
url如下:
>
获得授权AccessToken:
{
"access_token":"OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN--2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vw",
"expires_in":7200,
"refresh_token":"OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5CZPAwZksiuz_6x_TfkLoXLU7kdKM2232WDXB3Msuzq1A",
"openid":"oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
"scope":"snsapi_userinfo,"
}
5再使用授权AccessToken获取用户信息
url如下:
>
返回如下
{
"openid":"oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
"nickname":"方倍",
"sex":1,
"language":"zh_CN",
"city":"Shenzhen",
"province":"Guangdong",
"country":"CN",
"headimgurl":">
"privilege":[]
相关文章:
抖音 x-gorgon 03 免费生成接口 抖音630版本
抖音爬虫从0到1-第一d:环境配置
抖音爬虫从0到1-第二d:获取抖音用户数据
前面介绍了分析了抖音请求header中的 X-gorgon的获取方法 ,同时在分析 获取抖音用户数据的时候 ,我们发现爬取抖音用户的数据需要使用用户的user_id和sec_user_id,我们通过抓包工具获取用户的id以及sec_user_id,然后通过用户的关注列表和follow列表获取更多的用户的user_id和sec_user_id,下面我将介绍一下如何根据user_id和sec_user_id来获取抖音用户的详细数据。
首先在搭建好的环境中通过Fiddle抓取用户数据包。
我们知道了请求的api以及请求头里面都包含了哪些信息,我们就可以通过手动构造对应的请求参数来爬取用户的数据了。我已经在 前面的文章 获取到了 1W+ 的用户的 uid 以及 sec_user_id 的数据了,然后我们就可以通过这些数据来爬取用户的详细数据。
在文章 抖音爬虫从0到1-第二d:获取抖音用户数据 我们已经介绍了爬取抖音关注列表的api及其构造方法,其实获取用户详细信息和获取用户的关注列表的api基本一致,主要都是需要我们自行填充用户的user_id以及用户的sec_user_id还有一大堆的时间戳信息,其他的信息都是不变的。下面我们构造获取用户详细信息的api
上文我们已经分析了请求头,请求头的构造也比较方便,大部分内容都是固定的,需要我们填充的主要还是几个时间戳以及对应的X-Gorgon,其中X-Gorgon的构造方法比较复杂,在文章“ 抖音 x-gorgon 03 免费生成接口 抖音630版本 ”中我已经提供了一个生成X-Gorgon的接口,但是要注意填入正确的Cookie和Token你才能获得可用的X-Gorgon,否则你的Gorgon就是不可用的。下图是请求头里面的主要信息:
下面我写了一个构造请求头的函数:
根据上面对响应数据的分析,其对应的响应数据是json格式的,而且数据特别多,分析了一下,我找了一些对我比较有用的数据:
以上就是爬取用户信息的全部内容,码字不易,还请点赞关注,有任何问题请留言
以上就是关于如何实现微信公众号关注后就自动回复用户的昵称听说鱼塘软件可以做到,怎么做到的全部的内容,包括:如何实现微信公众号关注后就自动回复用户的昵称听说鱼塘软件可以做到,怎么做到的、小程序关联服务号推送模板消息、微信返回的用户信息用什么方式获取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)