微信网页授权的时候该怎么缓存

qq_35375619 2016-12-20 09:13:49
微信网页授权的时候,用户手动授权获取,然后跳转到网页,第一次进入有,然后刷新页面会出现41001错误也就是access_token失效,我想请问缓存的话,应该是缓存code,还是缓存access_token 和openid 啊?保持用的session来存储就可以了吧
...全文
618 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35375619 2016-12-20
  • 打赏
  • 举报
回复
引用 5 楼 Luke__ 的回复:
你第一次执行了$result=$wx->snsapi_userinfo($redirect_uri); 拿到openid 后不是应该跳转到正常业务页面吗。
是的,一次跳转页面可以,但是页面再刷新一次,获取的就会失效
林0507 2016-12-20
  • 打赏
  • 举报
回复
你第一次执行了$result=$wx->snsapi_userinfo($redirect_uri); 拿到openid 后不是应该跳转到正常业务页面吗。
qq_35375619 2016-12-20
  • 打赏
  • 举报
回复
引用 3 楼 Luke__ 的回复:
[quote=引用 2 楼 qq_35375619 的回复:] [quote=引用 1 楼 Luke__ 的回复:] access_token有效期有两个小时,41001错误是缺少access_token 42001错误才是access_token超时失效 可以参考下微信全局返回码:http://mp.weixin.qq.com/wiki/10/6380dc743053a91c544ffd2b7c959166.html
那我请问下,我第一次打开网页是可以的,刷新一次的access_token失效,那我应该怎么做来存储呢?请指教下![/quote] 贴代码看看[/quote]
public function snsapi_userinfo($redirect_uri)
	{
		// 1、准备Scope为snsapi_userinfo的网页授权页面URL;
		$redirect_uri = urlencode($redirect_uri);
		$snsapi_userinfo_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->appID}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect";

		// 2、用户手动同意授权,获取code;

		// 页面将跳转至 redirect_uri/?code=CODE&state=STATE
		if(!isset($_GET['code']))
		{
			header("Location:{$snsapi_userinfo_url}");
		}

		$code = $_GET['code'];

		// 3、通过code换取网页授权access_token。

		$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$this->appID}&secret={$this->appsecret}&code={$code}&grant_type=authorization_code";

		$result = $this->https_request($url);

		$access_token = $result['access_token'];
		$openid = $result['openid'];

		//4、根据上一步获取的access_token和openid拉取用户信息。

		$userinfo_url =  "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}&lang=zh_CN";

		return $this->https_request($userinfo_url);
	}
require_once '../weixin_api.php'; $appId='wxce300ad82db464c2'; $appsecret='f8b3035d0492309f1d1d52270209955d'; //实例化 $wx=new WeiXin($appId,$appsecret); $redirect_uri="http://1.wxdraw.applinzi.com/vote/vote.php"; $result=$wx->snsapi_userinfo($redirect_uri); 下面然后实例化这个类,然后调用这个方法,第一次可以成功是接受到code获取到access_token,和openid ,然后刷新页面应该是code取不到了,我现在很困惑是缓存code还是缓存access_token来,还有时间设置应该多久?
林0507 2016-12-20
  • 打赏
  • 举报
回复
引用 2 楼 qq_35375619 的回复:
[quote=引用 1 楼 Luke__ 的回复:] access_token有效期有两个小时,41001错误是缺少access_token 42001错误才是access_token超时失效 可以参考下微信全局返回码:http://mp.weixin.qq.com/wiki/10/6380dc743053a91c544ffd2b7c959166.html
那我请问下,我第一次打开网页是可以的,刷新一次的access_token失效,那我应该怎么做来存储呢?请指教下![/quote] 贴代码看看
qq_35375619 2016-12-20
  • 打赏
  • 举报
回复
引用 1 楼 Luke__ 的回复:
access_token有效期有两个小时,41001错误是缺少access_token 42001错误才是access_token超时失效 可以参考下微信全局返回码:http://mp.weixin.qq.com/wiki/10/6380dc743053a91c544ffd2b7c959166.html
那我请问下,我第一次打开网页是可以的,刷新一次的access_token失效,那我应该怎么做来存储呢?请指教下!
林0507 2016-12-20
  • 打赏
  • 举报
回复
access_token有效期有两个小时,41001错误是缺少access_token 42001错误才是access_token超时失效 可以参考下微信全局返回码:http://mp.weixin.qq.com/wiki/10/6380dc743053a91c544ffd2b7c959166.html
傲雪星枫 2016-12-20
  • 打赏
  • 举报
回复
缓存缓存access_token与expire过期时间。 用session保存可以。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧