微信开发中的疑惑。关于access_token

发布于 2022-09-02 15:09:11 字数 351 浏览 10 评论 0

最近接手一个微信项目。已经开发到一半了。

发现一些疑惑。

1、我们db中有个专门存放微信用户信息的表,最后竟然有两个字段,一个是access_token和jsapi的字段。

我了解到的是access_token是针对于微信公众号的密匙。并非针对每个登陆公众号的用户生成的。jsapi也是使用jssdk才会根据access_token去生成。
另外还了解到微信貌似会限制每天去取access_token。好像2K,跟项目负责人沟通,他的意思是access_token是每个用户不同。生成的,存下来,设置个时效。
不太懂,特来问问大家。~~~~

暂时这么多,谢啦~今天天气不错,大家都有个好心情~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

嘦怹 2022-09-09 15:09:11

在oauth中也有个access_token,这个确实是每个openid都不同

网页授权access_token

溇涏 2022-09-09 15:09:11

一共有两个accesstoken 一个是系统级很多接口都要用的。另外一个是获取用户信息用的accesstoken,每个用户的都不一样。你上面所说的就是获取用户信息的accesstoken。因为这个token有请求次数上限的限制,所以要存起来,而且还要存token的有效期和一个可以获取新token的一个freshtoken。这就是要存起来的原因。

风筝在阴天搁浅。 2022-09-09 15:09:11

有两种access_token,看你提到jsapi那就应该是oauth用的了,那个是根据授权用户不同的,好像也没啥限制,自己会过期,这个我没有缓存

痴意少年 2022-09-09 15:09:11

公众号的access_token每天是有设置调用次数的,每次拿到access_token之后应该存起来。access_token的有效时长是两个小时。每个用户在进入公众号之后会产出一个openid这个openid是用户的身份凭证(这个openid在某个公众号是唯一的,且是不变的)。

表情可笑 2022-09-09 15:09:11

微信采用的是Oauth认证,对于这种认证方式,有四种模式:

  • 授权码模式(authorization code)

  • 简化模式(implicit)

  • 密码模式(resource owner password credentials)

  • 客户端模式(client credentials)

首先第三方客户端(也就是你们的开发项目)需要在微信开放平台进行注册,然后会获取到一个clientId 和clientSecret

然后你提到的两种情况对应如下:

客户端模式(client credentials),不需要微信用户授权,只要第三方客户端向微信的认证api发送clientId 和clientSecret,就可以获取到一个access_token,此时这个access_token是跟第三方客户端绑定的,可以获取微信的公共信息。

授权码模式or简化模式:
这种认证方式在发送了clientId 和clientSecret后,会跳转到用户的授权界面(需要用户登录并授权),授权后会跳转到第三方客户端在微信开放平台注册时填写的redirect_url(通常为第三方客户端的服务器),并返回一个授权码code(简化模式直接返回access_token),然后第三方使用这个code去获取access_token,此时的access_token是对应特定微信用户的。授权码code的有效时间非常短,一般为30秒,而授权码模式也是公认四种认证模式中最安全的。

看你的描述,你们应该是授权码的认证模式,然后根据用户在授权页面做的选择,access_token对应不同的api。比如用户授权时勾选了可访问联系人,就只能访问获取联系人的api,这跟单个用户选择匹配的。另:每个access_token在微信平台的数据库中是已经包含用户id,所以你们不用存储用户信息,access_token已经包含了。

所有的access_token都有有效期,需要定时刷新,一般第三方开发都有一个用于定时刷新access_tken和发放的服务。

第一次发言,不知道我讲明白了……

原来分手还会想你 2022-09-09 15:09:11

声望不够不能点赞,@codeofshield 说的是对的。
微信开发时会遇到两个accessToken,一个是微信公众号接口调用的授权凭证,也就是每次调用微信公众平台其他接口所需要的接口凭证,详见链接描述。因为微信公众平台对每个注册应用都有这个accessToken刷新次数上限(目前是2000次/天),并且多台服务器同时利用accessToken调用微信接口时,必须保证accessToken都是最新更新的那个。所以这个accessToken是需要我们的服务器进行保存并定时去更新的(有效期两小时),至于具体是保存在数据库还是服务器缓存中就要看业务需要了。 如上,这个accessToken是一个平台与一个app之间对应并保持实时唯一的。

另外一个accessToken是微信用户授权我们应用时提供给我们的,这个token是某一个用户与某一个app之间对应保持实时唯一的,主要用来我们获取用户资源时校验权限的,这个没有次数限制,可以不做保存。但是如果需要频繁获取用户信息的话,建议也可以在微信用户授权你们应用时,触发定时器去实时更新,毕竟这样也确实能够节省很大的网络开销。详见链接描述

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文