{"id":29462,"date":"2024-11-25T16:03:29","date_gmt":"2024-11-25T08:03:29","guid":{"rendered":"https:\/\/fwq.ai\/blog\/29462\/"},"modified":"2024-11-25T16:03:29","modified_gmt":"2024-11-25T08:03:29","slug":"%e4%bd%bf%e7%94%a8c%e5%bc%80%e5%8f%91%e5%85%ac%e4%bc%97%e5%b9%b3%e5%8f%b0%e8%87%aa%e5%ae%9a%e4%b9%89%e8%8f%9c%e5%8d%95%e5%8a%9f%e8%83%bd%e5%ae%9e%e4%be%8b%e4%bb%a3%e7%a0%81","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/29462\/","title":{"rendered":"\u4f7f\u7528c#\u5f00\u53d1\u516c\u4f17\u5e73\u53f0\u81ea\u5b9a\u4e49\u83dc\u5355\u529f\u80fd\u5b9e\u4f8b\u4ee3\u7801"},"content":{"rendered":"<p style=\"text-align: left\">\u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u670d\u52a1\u53f7\u5f00\u653e\u4e86\u81ea\u5b9a\u4e49\u83dc\u5355API\uff0c\u672c\u6848\u4f8b\u4ecb\u7ecdC#\u5f00\u53d1\u5fae\u4fe1\u516c\u4f17\u53f7\u81ea\u5b9a\u4e49\u83dc\u5355\u529f\u80fd\u3002\u5728\u6b64\u57fa\u7840\u4e0a\u53ef\u4ee5\u5f00\u53d1\u66f4\u5b8c\u5584\u7684\u81ea\u5b9a\u4e49\u83dc\u5355\u7ba1\u7406\u529f\u80fd<\/p>\n<p style=\"text-align: left\"><span style=\"text-decoration:underline\">\u590d\u5236\u4ee3\u7801<\/span> \u4ee3\u7801\u5982\u4e0b:<\/p>\n<pre>&lt;%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeBehind=\"cm.aspx.cs\" Inherits=\"guotaotao_weixin.cm\" %&gt;\r\n&lt;!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd\"&gt;\r\n&lt;html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\" &gt;\r\n&lt;head runat=\"server\"&gt;\r\n    &lt;title&gt;test&lt;\/title&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n    &lt;form id=\"form1\" runat=\"server\"&gt;\r\n    &lt;p&gt;\r\n     &lt;asp:Literal ID=\"lt_msg\" runat=\"server\" &gt;&lt;\/asp:Literal&gt;\r\n    &lt;\/p&gt;\r\n    &lt;\/form&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p style=\"text-align: left\"><span style=\"text-decoration:underline\">\u590d\u5236\u4ee3\u7801<\/span> \u4ee3\u7801\u5982\u4e0b:<\/p>\n<pre>using System;\r\nusing System.Collections;\r\nusing System.Configuration;\r\nusing System.Data;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing System.Web.Security;\r\nusing System.Web.UI;\r\nusing System.Web.UI.HtmlControls;\r\nusing System.Web.UI.WebControls;\r\nusing System.Web.UI.WebControls.WebParts;\r\nusing System.Xml.Linq;\r\nnamespace guotaotao_weixin\r\n{\r\n    public partial class cm : System.Web.UI.Page\r\n    {\r\n        protected void Page_Load(object sender, EventArgs e)\r\n        {\r\n            if (!IsPostBack)\r\n            {\r\n                weixin wx = new weixin();\r\n                \/\/lt_msg.Text = wx.GetAccessToken();\r\n                lt_msg.Text = wx.DelMenu();\r\n                lt_msg.Text += wx.SetMenu();\r\n            }\r\n        }\r\n    }\r\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p style=\"text-align: left\"><span style=\"text-decoration:underline\">\u590d\u5236\u4ee3\u7801<\/span> \u4ee3\u7801\u5982\u4e0b:<\/p>\n<pre>namespace guotaotao_weixin {\r\n    \r\n    public partial class cm {\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ form1 \u63a7\u4ef6\u3002\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;remarks&gt;\r\n        \/\/\/ \u81ea\u52a8\u751f\u6210\u7684\u5b57\u6bb5\u3002\r\n        \/\/\/ \u82e5\u8981\u8fdb\u884c\u4fee\u6539\uff0c\u8bf7\u5c06\u5b57\u6bb5\u58f0\u660e\u4ece\u8bbe\u8ba1\u5668\u6587\u4ef6\u79fb\u5230\u4ee3\u7801\u9690\u85cf\u6587\u4ef6\u3002\r\n        \/\/\/ &lt;\/remarks&gt;\r\n        protected global::System.Web.UI.HtmlControls.HtmlForm form1;\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ lt_msg \u63a7\u4ef6\u3002\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;remarks&gt;\r\n        \/\/\/ \u81ea\u52a8\u751f\u6210\u7684\u5b57\u6bb5\u3002\r\n        \/\/\/ \u82e5\u8981\u8fdb\u884c\u4fee\u6539\uff0c\u8bf7\u5c06\u5b57\u6bb5\u58f0\u660e\u4ece\u8bbe\u8ba1\u5668\u6587\u4ef6\u79fb\u5230\u4ee3\u7801\u9690\u85cf\u6587\u4ef6\u3002\r\n        \/\/\/ &lt;\/remarks&gt;\r\n        protected global::System.Web.UI.WebControls.Literal lt_msg;\r\n    }\r\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p style=\"text-align: left\"><span style=\"text-decoration:underline\">\u590d\u5236\u4ee3\u7801<\/span> \u4ee3\u7801\u5982\u4e0b:<\/p>\n<pre>using System;\r\nusing System.Data;\r\nusing System.Configuration;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing System.Web.Security;\r\nusing System.Web.UI;\r\nusing System.Web.UI.HtmlControls;\r\nusing System.Web.UI.WebControls;\r\nusing System.Web.UI.WebControls.WebParts;\r\nusing System.Xml.Linq;\r\nusing guotaotao_weixin.database;\r\nusing guotaotao.database;\r\nnamespace guotaotao_weixin\r\n{\r\n    public class guotaotao\r\n    {\r\n        private string _content = \"\";\r\n        private string _FromUserName = \"\";\r\n        public int msgType = 0;\r\n        public int isFirst = 0;\r\n        public int pid = 0;\r\n        #region \"\u6784\u9020\u51fd\u6570\"\r\n            public guotaotao()\r\n            {\r\n            }\r\n            public guotaotao(string content)\r\n            {\r\n                this._content = content;\r\n            }\r\n            public guotaotao(string content,string FromUserName)\r\n            {\r\n                this._content = content;\r\n                this._FromUserName = FromUserName;\r\n            }\r\n        #endregion\r\n         \r\n        public string createMenuDate()\r\n        {\r\n            string postData = \"{\" + \"\r\n\";\r\n            postData += \"\"button\":[ \" + \"\r\n\";\r\n            postData += \"{ \" + \"\r\n\";\r\n            postData += \"\"name\":\"\u4ea7\u54c1\",\" + \"\r\n\";\r\n            postData += \"\"sub_button\":[\" + \"\r\n\";\r\n            postData += \"{ \" + \"\r\n\";\r\n            postData += \"   \"type\":\"click\",\" + \"\r\n\";\r\n            postData += \"   \"name\":\"\u65e0\u7cd6\u7cfb\u5217\", \" + \"\r\n\";\r\n            postData += \"   \"key\":\"gtt_menu_001001\"\" + \"\r\n\";\r\n            postData += \"},\" + \"\r\n\";\r\n            postData += \"{ \" + \"\r\n\";\r\n            postData += \"   \"type\":\"click\",\" + \"\r\n\";\r\n            postData += \"   \"name\":\"\u5e72\u679c\u7cfb\u5217\", \" + \"\r\n\";\r\n            postData += \"   \"key\":\"gtt_menu_001002\"\" + \"\r\n\";\r\n            postData += \"},\" + \"\r\n\";\r\n            postData += \"{ \" + \"\r\n\";\r\n            postData += \"   \"type\":\"click\",\" + \"\r\n\";\r\n            postData += \"   \"name\":\"\u4f11\u95f2\u7cfb\u5217\", \" + \"\r\n\";\r\n            postData += \"   \"key\":\"gtt_menu_001003\"\" + \"\r\n\";\r\n            postData += \"},\" + \"\r\n\";\r\n            postData += \"{ \" + \"\r\n\";\r\n            postData += \"   \"type\":\"click\",\" + \"\r\n\";\r\n            postData += \"   \"name\":\"\u513f\u7ae5\u7cfb\u5217\", \" + \"\r\n\";\r\n            postData += \"   \"key\":\"gtt_menu_001004\"\" + \"\r\n\";\r\n            postData += \" }]\" + \"\r\n\";\r\n            postData += \"},\" + \"\r\n\";\r\n            postData += \"{\" + \"\r\n\";\r\n            postData += \"\"name\":\"\u6d3b\u52a8\", \" + \"\r\n\";\r\n            postData += \"\"sub_button\":[\" + \"\r\n\";\r\n            postData += \"{ \" + \"\r\n\";\r\n            postData += \"   \"type\":\"click\",\" + \"\r\n\";\r\n            postData += \"   \"name\":\"\u62bd\u5956\", \" + \"\r\n\";\r\n            postData += \"   \"key\":\"gtt_menu_002001\"\" + \"\r\n\";\r\n            postData += \"},\" + \"\r\n\";\r\n            postData += \"{ \" + \"\r\n\";\r\n            postData += \"   \"type\":\"view\",\" + \"\r\n\";\r\n            postData += \"   \"name\":\"\u83b7\u5956\u540d\u5355\", \" + \"\r\n\";\r\n            postData += \"   \"url\":\"http:\/\/www.aaa.com\/apps\/honor_list.aspx\"\" + \"\r\n\";\r\n            postData += \"},\" + \"\r\n\";\r\n            postData += \"{ \" + \"\r\n\";\r\n            postData += \"   \"type\":\"click\",\" + \"\r\n\";\r\n            postData += \"   \"name\":\"\u4f18\u60e0\u5238\", \" + \"\r\n\";\r\n            postData += \"   \"key\":\"gtt_menu_002003\"\" + \"\r\n\";\r\n            postData += \" }]\" + \"\r\n\";\r\n            postData += \"},\" + \"\r\n\";\r\n            postData += \"{\" + \"\r\n\";\r\n            postData += \"\"name\":\"\u5e2e\u52a9\",\" + \"\r\n\";\r\n            postData += \"\"sub_button\":[\" + \"\r\n\";\r\n            postData += \"{ \" + \"\r\n\";\r\n            postData += \"   \"type\":\"view\",\" + \"\r\n\";\r\n            postData += \"   \"name\":\"\u5173\u4e8e\u6211\u4eec\", \" + \"\r\n\";\r\n            postData += \"   \"url\":\"http:\/\/www.aaa.com\/apps\/aboutus.aspx\"\" + \"\r\n\";\r\n            postData += \"},\" + \"\r\n\";\r\n            postData += \"{ \" + \"\r\n\";\r\n            postData += \"   \"type\":\"view\",\" + \"\r\n\";\r\n            postData += \"   \"name\":\"\u8054\u7cfb\u6211\u4eec\", \" + \"\r\n\";\r\n            postData += \"   \"url\":\"http:\/\/www.aaa.com\/apps\/contactus.aspx\"\" + \"\r\n\";\r\n            postData += \"},\" + \"\r\n\";\r\n            postData += \"{ \" + \"\r\n\";\r\n            postData += \"   \"type\":\"view\",\" + \"\r\n\";\r\n            postData += \"   \"name\":\"\u67e5\u8be2\u8ba2\u5355\", \" + \"\r\n\";\r\n            postData += \"   \"url\":\"http:\/\/www.aaa.com\/apps\/orders_chaxun.aspx\"\" + \"\r\n\";\r\n            postData += \"},\" + \"\r\n\";\r\n            postData += \"{ \" + \"\r\n\";\r\n            postData += \"   \"type\":\"view\",\" + \"\r\n\";\r\n            postData += \"   \"name\":\"\u7559\u8a00\u53cd\u9988\", \" + \"\r\n\";\r\n            postData += \"   \"url\":\"http:\/\/www.aaa.com\/apps\/feedback.aspx\"\" + \"\r\n\";\r\n            postData += \" }]\" + \"\r\n\";\r\n            postData += \"}]\" + \"\r\n\";\r\n            postData += \"}\" + \"\r\n\";\r\n            return postData;\r\n        }\r\n    }\r\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p style=\"text-align: left\">\u83dc\u5355\u4e2d\u7684URL\u5730\u5740\u6362\u6210\u81ea\u5df1\u7684<\/p>\n<p style=\"text-align: left\"><span style=\"text-decoration:underline\">\u590d\u5236\u4ee3\u7801<\/span> \u4ee3\u7801\u5982\u4e0b:<\/p>\n<pre>using System;\r\nusing System.Web.Security;\r\nusing System.Xml;\r\nusing aaa_weixin.database;\r\nusing Newtonsoft.Json;\r\nnamespace aaa_weixin\r\n{\r\n    public class weixin\r\n    {\r\n        private string Token = \"\"; \/\/\u5fae\u4fe1\u91cc\u9762\u5f00\u53d1\u8005\u6a21\u5f0fToken\r\n        private string devlopID = \"\";\/\/\u5fae\u4fe1\u91cc\u9762\u5f00\u53d1\u8005\u6a21\u5f0f\uff1a\u5f00\u53d1\u8005ID\r\n        private string devlogPsw = \"\";\/\/\u5fae\u4fe1\u91cc\u9762\u5f00\u53d1\u8005\u6a21\u5f0f\uff1a \u5f00\u53d1\u8005\u5bc6\u7801\r\n        public string AccessToken = \"\"; \/\/\u83b7\u53d6\u7684\u901a\u884c\u8bc1\r\n        public void Auth()\r\n        {\r\n            string echoStr = System.Web.HttpContext.Current.Request.QueryString[\"echoStr\"];\r\n            if (CheckSignature())\r\n            {\r\n                if (!string.IsNullOrEmpty(echoStr))\r\n                {\r\n                    System.Web.HttpContext.Current.Response.Write(echoStr);\r\n                    System.Web.HttpContext.Current.Response.End();\r\n                }\r\n            }\r\n        }\r\n        public string GetAccessToken() \/\/\u83b7\u53d6\u901a\u884c\u8bc1\r\n        {            \r\n            string url_token = \"https:\/\/api.weixin.qq.com\/cgi-bin\/token?grant_type=client_credential&amp;appid=\" + devlopID + \"&amp;secret=\" + devlogPsw;\r\n            string result = func.webRequestGet(url_token);\r\n            accessToken deserializedProduct = (accessToken)JsonConvert.DeserializeObject(result, typeof(accessToken));\r\n            this.AccessToken  = deserializedProduct.access_Token;\r\n            return this.AccessToken;\r\n        }\r\n        public string GetMenu() \/\/\u83b7\u53d6\u5f53\u524d\u83dc\u5355\u60c5\u51b5\r\n        {\r\n            string url_Menu_Get = \"https:\/\/api.weixin.qq.com\/cgi-bin\/menu\/get?access_token=\" + this.AccessToken;\r\n            string output = func.webRequestGet(url_Menu_Get);\r\n            \/\/wxErr deserializedProduct = (wxErr)JsonConvert.DeserializeObject(output, typeof(wxErr));\r\n            \/\/return deserializedProduct.errmsg;\r\n            return output;\r\n        }\r\n        public string SetMenu() \/\/\u8bbe\u7f6e\u6700\u65b0\u83dc\u5355\r\n        {\r\n            string url_Menu_Create = \"https:\/\/api.weixin.qq.com\/cgi-bin\/menu\/create?access_token=\" + this.GetAccessToken();\r\n            aaa gtt = new aaa();\r\n            string postData = gtt.createMenuDate();\r\n            string result = func.webRequestPost(url_Menu_Create,postData);\r\n            return result;\r\n        }\r\n        public string DelMenu() \/\/\u5220\u9664\u83dc\u5355\r\n        {\r\n            string url_Menu_Delete = \"https:\/\/api.weixin.qq.com\/cgi-bin\/menu\/delete?access_token=\" + this.GetAccessToken();\r\n            string result = func.webRequestGet(url_Menu_Delete);\r\n            return result;\r\n        }\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u9a8c\u8bc1\u5fae\u4fe1\u7b7e\u540d\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ * \u5c06token\u3001timestamp\u3001nonce\u4e09\u4e2a\u53c2\u6570\u8fdb\u884c\u5b57\u5178\u5e8f\u6392\u5e8f\r\n        \/\/\/ * \u5c06\u4e09\u4e2a\u53c2\u6570\u5b57\u7b26\u4e32\u62fc\u63a5\u6210\u4e00\u4e2a\u5b57\u7b26\u4e32\u8fdb\u884csha1\u52a0\u5bc6\r\n        \/\/\/ * \u5f00\u53d1\u8005\u83b7\u5f97\u52a0\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\u53ef\u4e0esignature\u5bf9\u6bd4\uff0c\u6807\u8bc6\u8be5\u8bf7\u6c42\u6765\u6e90\u4e8e\u5fae\u4fe1\u3002\r\n        \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\r\n        private bool CheckSignature()\r\n        {\r\n            string signature = System.Web.HttpContext.Current.Request.QueryString[\"signature\"];\r\n            string timestamp = System.Web.HttpContext.Current.Request.QueryString[\"timestamp\"];\r\n            string nonce = System.Web.HttpContext.Current.Request.QueryString[\"nonce\"];\r\n            string[] ArrTmp = { Token, timestamp, nonce };\r\n            Array.Sort(ArrTmp);     \/\/\u5b57\u5178\u6392\u5e8f\r\n            string tmpStr = string.Join(\"\", ArrTmp);\r\n            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, \"SHA1\");\r\n            tmpStr = tmpStr.ToLower();\r\n            if (tmpStr == signature)\r\n            {\r\n                return true;\r\n            }\r\n            else\r\n            {\r\n                return false;\r\n            }\r\n        }\r\n    }\r\n    public class wxErr\r\n    {\r\n        private int Errcode;\r\n        public int errcode\r\n        {\r\n            get { return Errcode; }\r\n            set { Errcode = value; }\r\n        }\r\n        private string Errmsg;\r\n        public string errmsg\r\n        {\r\n            get { return Errmsg; }\r\n            set { Errmsg = value; }\r\n        }\r\n    }\r\n    public class accessToken\r\n    {\r\n        private string access_token;\r\n        public string access_Token\r\n        {\r\n            get { return access_token; }\r\n            set { access_token = value; }\r\n        }\r\n        private int expires_in;\r\n        public int expires_In\r\n        {\r\n            get { return expires_in; }\r\n            set { expires_in = value; }\r\n        } \r\n    }\r\n }<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u4f7f\u7528c#\u5f00\u53d1\u516c\u4f17\u5e73\u53f0\u81ea\u5b9a\u4e49\u83dc\u5355\u529f\u80fd\u5b9e\u4f8b\u4ee3\u7801\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u670d\u52a1\u53f7\u5f00\u653e\u4e86\u81ea\u5b9a\u4e49\u83dc\u5355API\uff0c\u672c\u6848\u4f8b\u4ecb\u7ecdC#\u5f00\u53d1\u5fae\u4fe1\u516c\u4f17\u53f7\u81ea\u5b9a\u4e49\u83dc\u5355\u529f\u80fd\u3002\u5728\u6b64\u57fa\u7840\u4e0a\u53ef\u4ee5\u5f00\u53d1\u66f4\u5b8c\u5584\u7684\u81ea\u5b9a\u4e49\u83dc\u5355\u7ba1\u7406\u529f\u80fd \u590d\u5236\u4ee3\u7801 \u4ee3\u7801\u5982\u4e0b: &lt;%@ Page Language=&#8221;C#&#8221; AutoEventWireup=&#8221;true&#8221; CodeBehind=&#8221;cm.aspx.cs&#8221; Inherits=&#8221;guotaotao_weixin.cm&#8221; %&gt; &lt;!DOCTYPE html PUBLIC &#8220;-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN&#8221; &#8220;http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd&#8221;&gt; &lt;html xmlns=&#8221;http:\/\/www.w3.org\/1999\/xhtml&#8221; &gt; &lt;head runat=&#8221;server&#8221;&gt; &lt;title&gt;test&lt;\/title&gt; &lt;\/head&gt; &lt;body&gt; &lt;form id=&#8221;form1&#8243; runat=&#8221;server&#8221;&gt; &lt;p&gt; &lt;asp:Literal ID=&#8221;lt_msg&#8221; runat=&#8221;server&#8221; &gt;&lt;\/asp:Literal&gt; &lt;\/p&gt; &lt;\/form&gt; &lt;\/body&gt; &lt;\/html&gt; \u767b\u5f55\u540e\u590d\u5236 \u590d\u5236\u4ee3\u7801 \u4ee3\u7801\u5982\u4e0b: using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-29462","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29462","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=29462"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29462\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=29462"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=29462"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=29462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}