mirror of
				https://gitee.com/ledc/IYUUAutoReseed
				synced 2025-10-31 08:49:48 +00:00 
			
		
		
		
	优化合作站点登录逻辑,设置登录缓存,减少请求。
This commit is contained in:
		| @@ -18,25 +18,8 @@ class Oauth | |||||||
|     public static $passkey = ''; |     public static $passkey = ''; | ||||||
|     // 合作站名字 |     // 合作站名字 | ||||||
|     public static $site = ''; |     public static $site = ''; | ||||||
|     /** |     // 登录缓存路径 | ||||||
|      * 初始化配置 |     public static $SiteLoginCache = ROOT_PATH.DS.'config'.DS.'siteLoginCache_{}.json'; | ||||||
|      */ |  | ||||||
|     public static function init() |  | ||||||
|     { |  | ||||||
|         global $configALL; |  | ||||||
|         foreach (self::$sites as $name) { |  | ||||||
|             if (isset($configALL[$name]['passkey']) && $configALL[$name]['passkey'] && isset($configALL[$name]['id']) && $configALL[$name]['id']) { |  | ||||||
|                 self::$token = self::getSign(); |  | ||||||
|                 self::$user_id = $configALL[$name]['id']; |  | ||||||
|                 self::$passkey =  sha1($configALL[$name]['passkey']);     // 避免泄露用户passkey秘钥 |  | ||||||
|                 self::$site = $name; |  | ||||||
|                 return true; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         echo "-----缺少合作站点登录参数:token, user_id, passkey, site \n"; |  | ||||||
|         echo "-----当前正在使用测试接口,功能可能会受到限制! \n\n"; |  | ||||||
|         return false; |  | ||||||
|     } |  | ||||||
|     /** |     /** | ||||||
|      * 从配置文件内读取爱语飞飞token作为鉴权参数 |      * 从配置文件内读取爱语飞飞token作为鉴权参数 | ||||||
|      */ |      */ | ||||||
| @@ -57,10 +40,24 @@ class Oauth | |||||||
|      * 作用:在服务器端实现微信用户与合作站点用户id的关联 |      * 作用:在服务器端实现微信用户与合作站点用户id的关联 | ||||||
|      * 参数:爱语飞飞token + 合作站点用户id + sha1(合作站点密钥passkey) + 合作站点标识 |      * 参数:爱语飞飞token + 合作站点用户id + sha1(合作站点密钥passkey) + 合作站点标识 | ||||||
|      */ |      */ | ||||||
|     public static function login($apiUrl = '') |     public static function login($apiUrl = '', $sites = array()) | ||||||
|     { |     { | ||||||
|         $is_oauth = self::init(); |         global $configALL; | ||||||
|         if ($is_oauth) { |         // 云端下发合作的站点标识 | ||||||
|  |         self::$sites = $sites ? $sites : self::$sites; | ||||||
|  |         $ret = false; | ||||||
|  |         self::$token = self::getSign(); | ||||||
|  |         foreach (self::$sites as $name) { | ||||||
|  |             if (is_file(str_replace('{}', $name, self::$SiteLoginCache))){ | ||||||
|  |                 // 存在鉴权缓存 | ||||||
|  |                 $ret = true; | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  |             if (isset($configALL[$name]['passkey']) && $configALL[$name]['passkey'] && isset($configALL[$name]['id']) && $configALL[$name]['id']) { | ||||||
|  |                 self::$user_id = $configALL[$name]['id']; | ||||||
|  |                 self::$passkey =  sha1($configALL[$name]['passkey']);     // 避免泄露用户passkey秘钥 | ||||||
|  |                 self::$site = $name; | ||||||
|  |  | ||||||
|                 $curl = new Curl(); |                 $curl = new Curl(); | ||||||
|                 $curl->setOpt(CURLOPT_SSL_VERIFYPEER, false); |                 $curl->setOpt(CURLOPT_SSL_VERIFYPEER, false); | ||||||
|                 $data = [ |                 $data = [ | ||||||
| @@ -71,8 +68,32 @@ class Oauth | |||||||
|                 ]; |                 ]; | ||||||
|                 $res = $curl->get($apiUrl, $data); |                 $res = $curl->get($apiUrl, $data); | ||||||
|                 p($res->response); |                 p($res->response); | ||||||
|             return true; |  | ||||||
|  |                 $rs = json_decode($res->response,true); | ||||||
|  |                 if (isset($rs['ret']) && $rs['ret'] == 200 && isset($rs['data']['success']) && $rs['data']['success']){ | ||||||
|  |                     self::setSiteLoginCache($name, $rs); | ||||||
|  |                     $ret = true; | ||||||
|  |                 }else{ | ||||||
|  |                     $msg = isset($rs['msg']) && $rs['msg'] ? $rs['msg'] : '远端服务器无响应,请稍后重试!'; | ||||||
|  |                     $msg = isset($rs['data']['errmsg']) && $rs['data']['errmsg'] ? $rs['data']['errmsg'] : $msg; | ||||||
|  |                     echo $msg . PHP_EOL; | ||||||
|                 } |                 } | ||||||
|         return false; |             } else { | ||||||
|  |                 echo $name.'合作站点参数配置不完整,请同时填写passkey和用户id。' . PHP_EOL; | ||||||
|  |                 echo '合作站点鉴权配置,请查阅:https://www.iyuu.cn/archives/337/'. PHP_EOL. PHP_EOL; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return $ret; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * 写鉴权成功配置 | ||||||
|  |      */ | ||||||
|  |     private static function setSiteLoginCache($key = '', $array = []) | ||||||
|  |     { | ||||||
|  |         $json = json_encode($array, JSON_UNESCAPED_UNICODE); | ||||||
|  |         $myfile = str_replace('{}', $key, self::$SiteLoginCache); | ||||||
|  |         $file_pointer = @fopen($myfile, "w"); | ||||||
|  |         $worldsnum = @fwrite($file_pointer, $json); | ||||||
|  |         @fclose($file_pointer); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user