使用 Senparc.Weixin.MP SDK
第一次打开 获取openid非常慢,过程:
1.构建连接string baseAuthUrl = OAuthApi.GetAuthorizeUrl;
然后跳转到微信,微信回调时会给到参数code
2.根据code,调用 OAuthApi.GetAccessToken 获取到openid
怎么解决慢,大家 是怎么获取openid的? 谢谢!
其实 不是为了 那token,是 为了 拿openid, openid是 区分不同的客户端的。openid 有加到 cookie里、localstorage中,但是 缓存不了多久。 每次打开微信时,openid没了,就要去获取,非常慢。
这个是没有办法事情。能够缓存多长,取决于cookie 或者 localstorage 的持续时间。根据我的经验,localstorage持续时间比较长,并没有你说的“每次打开都...”。
也不是每次,过了一段时间 没了
基本都是这么弄的 第一次没办法 但是 你可以缓存到应用程序中啊 只要不是每次刷新页面都去取不就得了 一次可以用7200秒呢
更新了。是为了获取 openid
@Qlin: openid 是不会变的 只要放到cookie不过期就好了
@小眼睛老鼠:
发现 会丢失
取得操作Token,缓存到你的数据库,存上你拿到的token时间,下次调用之前判断当前时间和你上一次拿到Token的时间间隔是否在2小时以内,若不是,重新获取操作token,如果2小时以内,则直接拿出来用就行,你每次调用接口都获取操作token的话次数会超过限制的。
更新了。是为了获取 openid
看问题应该是还没定位到问题出现在哪,所以得先定位问题才能去解决问题。
建议将你的程序记录好日志,记录每一步执行的时间。然后看看到底是哪一个方法导致时间过长。
单单靠猜测的话一步一步的试不如通过日志来查询来的快。
慢 主要是 请求授权 获取code,再通过code 去http请求获取openid。缓存时间 老是不长
可以缓存到应用程序中 每次刷新页面都去取就行了,然后取得操作Token,缓存到你的数据库,存上你拿到的token时间,下次调用之前判断当前时间和你上一次拿到Token的时间间隔是否在2小时以内,若不是,重新获取操作token,如果2小时以内,则直接拿出来用就行,将程序记录好日志,记录每一步执行的时间。然后看看到底是哪一个方法导致时间过长。