{"id":233014,"date":"2023-02-03T19:22:00","date_gmt":"2023-02-03T16:22:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233014"},"modified":"2023-02-03T19:24:25","modified_gmt":"2023-02-03T16:24:25","slug":"hur-cachelagrar-jag-wechat-token-via-php","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/hur-cachelagrar-jag-wechat-token-via-php\/","title":{"rendered":"Hur cachelagrar jag WeChat Token via PHP?"},"content":{"rendered":"<p>WeChat API:er kr\u00e4ver inmatning av token, som n\u00e5s via f\u00f6ljande <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/hur-komprimerar-man-bilder-med-imagerecycle-api-php-skriptet\/\" 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>Vid framg\u00e5ng returnerar den tokenstr\u00e4ngen och utg\u00e5ngen p\u00e5 n\u00e5gra sekunder. Det finns en hastighetsgr\u00e4ns f\u00f6r att anropa detta API s\u00e5 vi m\u00e5ste cache tokenstr\u00e4ngen lokalt f\u00f6r att undvika att anropa API f\u00f6r ofta. Om token inte har g\u00e5tt ut \u00e4nnu, kommer anrop av API:et att returnera samma token.<\/p>\n<p>Att anropa API har n\u00e4tverkslatens och vi b\u00f6r \u00e5teranv\u00e4nda token n\u00e4r vi kan. Det b\u00e4sta s\u00e4ttet \u00e4r att cache det lokalt via <a href=\"https:\/\/helloacm.com\/forums\/forum\/shell-scripting-database\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">databas<\/a> eller fil. F\u00f6ljande <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/php-skript-foer-att-saekra-wordpress-mapparna-genom-att-staella-in-korrekta-filbehoerigheter\/\" title=\"PHP-skript\">PHP-skript<\/a> kommer att kontrollera de cachade tokens som lagras och dess giltighet.<\/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 p\u00e5 Github<\/a><\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hur cachelagrar jag WeChat Token via 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":[848,901,922,807,724],"tags":[1173],"class_list":["post-233014","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-oevrig","category-php-9","category-utvecklaren","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233014","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=233014"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233014\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/224790"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=233014"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=233014"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=233014"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}