php微信網頁授權刷新報錯解決方案


網頁授權頁面,初次授權接入的時候沒啥問題,可一旦刷新頁面或者返回都會報錯!解決辦法,使用session保存第一次獲取到的用戶信息,還有用草料二維碼的話,最后一次返回也會出錯,但把授權鏈接放在公眾號內部就可以了。

授權頁面代碼如下:

index.php頁面,在tp5下面的。

<?php

namespace app\home\controller;
 
use think\Controller;
  
//define your token

Class Index extends Base
{   
   public function index()
   { session_start();//開啟session
     if($_SESSION['openid']){
	  return    $this->fetch('Lists/lists');
     }else{
	  $code=$_GET["code"];
      $userinfo_array=$this->getUserInfo($code);
	  $_SESSION['openid']=$userinfo_array['openid'];
      $_SESSION['headimgurl']=$userinfo_array['headimgurl'];
	  return    $this->fetch('Lists/lists');
	 }
   }
   public function getUserInfo($code)
   {
	 $appid="XXXXX";//修改為你自己的
	 $appseret="XXXXXX";//修改為你自己的
	 $access_token="";
	 //根據code獲得網頁Access Token
	 $access_token_url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appseret&code=$code&grant_type=authorization_code";
	 $access_token_json=$this->https_request( $access_token_url);
	 $access_token_array=json_decode($access_token_json,true);//轉換為數組,若不寫true則會轉換為數組對象
	 $access_token=$access_token_array['access_token'];
	 $openid=$access_token_array['openid'];
	 //根據openid和access_token獲得用戶信息
	 $userinfo_url="https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid";
	 $userinfo_json=$this->https_request($userinfo_url);
	 $userinfo_array=json_decode($userinfo_json,true);
	 return $userinfo_array;
   }
   
}

使用session可以解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM