{"id":220103,"date":"2023-02-03T18:45:00","date_gmt":"2023-02-03T15:45:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=220103"},"modified":"2023-02-03T19:07:21","modified_gmt":"2023-02-03T16:07:21","slug":"kak-kjeshirovat-token-wechat-cherez-php","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/ru\/kak-kjeshirovat-token-wechat-cherez-php\/","title":{"rendered":"\u041a\u0430\u043a \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043a\u0435\u043d WeChat \u0447\u0435\u0440\u0435\u0437 PHP?"},"content":{"rendered":"<p>API-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b WeChat \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0432\u0432\u043e\u0434\u0430 \u0442\u043e\u043a\u0435\u043d\u0430, \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 <a href=\"https:\/\/wordpress.mediadoma.com\/ru\/kak-szhimat-izobrazhenija-s-pomoshhju-imagerecycle-api-skript-php\/\" title=\"API\">API<\/a> :<\/p>\n<pre><code>https:\/\/api.weixin.qq.com\/cgi-bin\/token?grant_type=client_credential&amp;appid=APPID&amp;secret=APPSECRET<\/code><\/pre>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0445\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0442\u043e\u043a\u0435\u043d\u0430 \u0438 \u0441\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u043e\u0433\u043e API, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0442\u043e\u043a\u0435\u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0447\u0430\u0441\u0442\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 API. \u0415\u0441\u043b\u0438 \u0441\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430 \u0435\u0449\u0435 \u043d\u0435 \u0438\u0441\u0442\u0435\u043a, \u0432\u044b\u0437\u043e\u0432 API \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0435\u0440\u043d\u0435\u0442 \u0442\u043e\u0442 \u0436\u0435 \u0442\u043e\u043a\u0435\u043d.<\/p>\n<p>\u0412\u044b\u0437\u043e\u0432 API \u0438\u043c\u0435\u0435\u0442 \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443, \u0438 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043a\u0435\u043d \u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/helloacm.com\/forums\/forum\/shell-scripting-database\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445<\/a> \u0438\u043b\u0438 \u0444\u0430\u0439\u043b. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 <a href=\"https:\/\/wordpress.mediadoma.com\/ru\/php-skript-dlja-zashhity-papok-wordpress-putem-ustanovki-pravilnyh-prav-dostupa-k-fajlam\/\" title=\"PHP-\u0441\u043a\u0440\u0438\u043f\u0442\">PHP-\u0441\u043a\u0440\u0438\u043f\u0442<\/a> \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b \u0438 \u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<pre><code>define('APPID', 'APPID');\ndefine('APPSECRET', 'APPSECRET');\ndefine('TOKENFILE', 'token.txt'); \ndefine('EXPIRY', 'expiry.txt');\n\u00a0\ndate_default_timezone_set('UTC');\n\u00a0\nfunction getToken() {\n\u00a0 $tokenfile = TOKENFILE;\n\u00a0 $expiryfile = EXPIRY;\n\u00a0 if (is_file($tokenfile)) {\n\u00a0 \u00a0 $token = trim(file_get_contents($tokenfile));\n\u00a0 }\n\u00a0 if ($token &amp;&amp; is_file($expiryfile)) {\n\u00a0 \u00a0 $x = (integer)trim(file_get_contents($expiryfile));\n\u00a0 \u00a0 if ($x &gt; 0) {\n\u00a0 \u00a0 \u00a0 if (time() &lt; $x) { \/\/ token still valid\n\u00a0 \u00a0 \u00a0 \u00a0 return $token;\n\u00a0 \u00a0 \u00a0 } \n\u00a0 \u00a0 } \u00a0\n\u00a0 } \n\u00a0 \/\/ invoke wechat API if token is not found or has expired\n\u00a0 $url = \"&lt;a class=\"vglnk\" target=\"_blank\" href=\"https:\/\/api.weixin.qq.com\/cgi-bin\/token?grant_type=client_credential&amp;appid=\".APPID.\"&amp;secret=\" rel=\"nofollow\"&gt;&lt;span&gt;https&lt;\/span&gt;&lt;span&gt;:\/\/&lt;\/span&gt;&lt;span&gt;api&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;weixin&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;qq&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;com&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;cgi&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;bin&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;token&lt;\/span&gt;&lt;span&gt;?&lt;\/span&gt;&lt;span&gt;grant&lt;\/span&gt;&lt;span&gt;_&lt;\/span&gt;&lt;span&gt;type&lt;\/span&gt;&lt;span&gt;=&lt;\/span&gt;&lt;span&gt;client&lt;\/span&gt;&lt;span&gt;_&lt;\/span&gt;&lt;span&gt;credential&lt;\/span&gt;&lt;span&gt;&amp;&lt;\/span&gt;&lt;span&gt;appid&lt;\/span&gt;&lt;span&gt;=\".&lt;\/span&gt;&lt;span&gt;APPID&lt;\/span&gt;&lt;span&gt;.\"&amp;&lt;\/span&gt;&lt;span&gt;secret&lt;\/span&gt;&lt;span&gt;=&lt;\/span&gt;&lt;\/a&gt;\". APPSECRET;\n\u00a0 $data = trim(file_get_contents($url)); \n\u00a0 if ($data) {\n\u00a0 \u00a0 $data = json_decode($data, true);\n\u00a0 \u00a0 if ($data) {\n\u00a0 \u00a0 \u00a0 $token = $data['access_token'];\n\u00a0 \u00a0 \u00a0 $expiry = time() + (integer)$data['expires_in'];\n\u00a0 \u00a0 \u00a0 \/\/ save for cache until expiry\n\u00a0 \u00a0 \u00a0 file_put_contents($tokenfile, $token, LOCK_EX);\n\u00a0 \u00a0 \u00a0 file_put_contents($expiryfile, $expiry, LOCK_EX);\n\u00a0 \u00a0 \u00a0 return $token;\n\u00a0 \u00a0 }\n\u00a0 }\n\u00a0 \/\/ can't get valid token\n\u00a0 return \"\"; \n}<\/code><\/pre>\n<p><a href=\"https:\/\/github.com\/DoctorLai\/WeChat-Example-Developer\/blob\/master\/getToken.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">getToken.php \u043d\u0430 Github<\/a><\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0437\u0430\u043f\u0438\u0441\u0438:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u0430\u043a \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043a\u0435\u043d WeChat \u0447\u0435\u0440\u0435\u0437 PHP?<\/p>\n","protected":false},"author":1,"featured_media":224790,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[809,900,921,726,850],"tags":[1171,1171],"class_list":["post-220103","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-ru","category-kod-2","category-drugoj","category-rozrobnyk-ru","category-uchebniki-ru","tag-affiai-ru"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/ru\/wp-json\/wp\/v2\/posts\/220103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/ru\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/ru\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/ru\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/ru\/wp-json\/wp\/v2\/comments?post=220103"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/ru\/wp-json\/wp\/v2\/posts\/220103\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/ru\/wp-json\/wp\/v2\/media\/224790"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/ru\/wp-json\/wp\/v2\/media?parent=220103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/ru\/wp-json\/wp\/v2\/categories?post=220103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/ru\/wp-json\/wp\/v2\/tags?post=220103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}