1. WeChat ?? ?? ??
WeChat ?? ?? ????: ?? ?? ???? ?? 3?? 1? ??? ??? ? ???, ? 1? ???? ?? 5?? ?? ??. 1?? ???? ?? 4?? ??? ??? ? ???, 2?? ???? ?? 7?? ??? ??? ? ????. ?? ??? "..."?? ?????.
?? ??? ?? ????? ???? ??? ? ????.
??? ?? ?? ??? ?? ???? ???? ???? ??? ?? ???????? ???? ?? ???? ?? ?? ?? ??? ?????, ??? ???? ??? WeChat OpenID? ???? ? ?? ?? ???? ?? ? ???? ??? ????. ?? ? ???? ?? ??? ??? ? ???, ??? ?? ??? ?? ??? ?? ?? ??? ??? ? ????.
??? ???? Url ?? ???? ?? WeChat? ??? ??? ????.
???? WeChat ?? ??? ?3? ????? ???? ??(Web WeChat ??), ?? ??? ? ?????? ?? ?? ???? ?? ??(???, ??, ??, ?? ??)? ?? ? ????. ??? ??? ???? ?? ???, ??? ?? ??, ?? ???, ??? ?? ?? ?? ??? ??? ? ????. "??? ?? ?? ??? ?? ?????? ???? ?? ?? ? ??? ????? ?? ? ???? OpenID? ????? ???? ?? ??? ??? ? ????. ??? ???? ?? ??? ??? ?? ??? ? ????. ???? ??? ???? ????. ???? ????? ?? ???. ?? ??? ????? ???? ??? ??? ???? ?????? ?????. ???? ???? ?? ??? ?? ? ????. ?? ??? ???? ??????.)"
2. ???? ?? ??? URL
??? ??? ??? ???? ?? ???? ? ?? ??? ????. ???? ???? ?? ??? ?? ? ?? ??? ??? ???????.
??? ?? ???? ??? ???? http://www.iqidi.com/testwx.ashx ???? ???? ?? ???? OpenID ? ?? ???? ??? ???? ??? ?????.
scope=snsapi_base ??? ??? ??? ????.
http://m.miracleart.cn/scope=snsapi_base&state=123#wechat_redirect https:// open.weixin.qq.com/connect/oauth2/authorize?appid=wx3d81fc2886d86526&redirect_uri=http%3A%2F%2Fwww.iqidi.com%2Ftestwx.ashx&response_type=code&scope=snsapi_base&state=123#wechat_redirect ??? ??=snsapi_userinfo
?? ??? ??? ????.
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3d81fc2886d86526&redirect_uri=http%3A%2F%2Fwww.iqidi.com% 2Ftestwx.ashx&response_type=code&scope=snsapi_userinfo&state =123#wechat_redirect
??? ??? ?????? ???? ??? ????. ? ??? ???? ??? ? ??? ? ??? ????? ?? ??? ?????. ???? ?? ?????.
? ? ?? ??? ?? ??? ???? ????? ?? ???? ??? ?? ???? OpenID? ???? ???????. ??? ??. ? ?? ??? ?? ?????. ???? ??? ?????? ??? ????.
TestWX.ashx? ??? ??? ??? ??? ????.
/// <summary> /// TestWX 的摘要說(shuō)明 /// </summary> public class TestWX : IHttpHandler { string appId = ""; //換成你的信息 string appSecret = ""; //換成你的信息 public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string content = ""; if (context.Request != null && context.Request.Url != null) { NameValueCollection list = HttpUtility.ParseQueryString(context.Request.Url.Query); foreach (string key in list.AllKeys) { content += string.Format("{0}:{1} \r\n", key, list[key]); } } string code = context.Request.QueryString["code"] ?? ""; if (!string.IsNullOrEmpty(code)) { IBasicApi api = new BasicApi(); try { AppConfig config = new AppConfig(); appId = config.AppConfigGet("AppId");//從配置中獲取微信程序ID appSecret = config.AppConfigGet("AppSecret");//從配置中獲取微信程序秘鑰 AccessTokenResult result = api.GetAccessToken(appId, appSecret, code); if (result != null) { content += string.Format("openid:{0}\r\n", result.openid); string token = api.GetAccessToken(appId, appSecret); IUserApi userApi = new UserApi(); UserJson userDetail = userApi.GetUserDetail(token, result.openid); if (userDetail != null) { content += string.Format("nickname:{0} sex:{1}\r\n", userDetail.nickname, userDetail.sex); content += string.Format("Location:{0} {1} {2} {3}\r\n", userDetail.country, userDetail.province, userDetail.city, userDetail.language); content += string.Format("HeadUrl:{0} \r\n", userDetail.headimgurl); content += string.Format("subscribe:{0},{1}\r\n", (userDetail.subscribe == 1) ? "已訂閱" : "未訂閱", userDetail.subscribe_time.GetDateTime()); } } } catch { } } context.Response.Write(content); }
? ????? ?? ?? ??? ???? ?????, ? ? ??? ?? ???? ????? ??? ???? ??? ???? ????.
NameValueCollection list = HttpUtility.ParseQueryString(context.Request.Url.Query); foreach (string key in list.AllKeys) { content += string.Format("{0}:{1} \r\n", key, list[key]); }
?? ?? Code ????? ?? ? API ?????? ?? ???? OpenID? ??? AccessTokenResult ???? ????.
AccessTokenResult result = api.GetAccessToken(appId, appSecret, code);
?? ?? ? ??? ??? OpenID? ??? ?? ???? API? ???? ???? ?? ??? ????. ??? ????.
當(dāng)我們把用戶的相關(guān)信息獲取到了,就可以做各種用戶信息的展示了,如下代碼所示。
if (userDetail != null) { content += string.Format("nickname:{0} sex:{1}\r\n", userDetail.nickname, userDetail.sex); content += string.Format("Location:{0} {1} {2} {3}\r\n", userDetail.country, userDetail.province, userDetail.city, userDetail.language); content += string.Format("HeadUrl:{0} \r\n", userDetail.headimgurl); content += string.Format("subscribe:{0},{1}\r\n", (userDetail.subscribe == 1) ? "已訂閱" : "未訂閱", userDetail.subscribe_time.GetDateTime()); }
3、重定向鏈接菜單的用途
這種菜單就是需要指定域名,在微信后臺(tái)中進(jìn)行設(shè)置,重定向的鏈接必須屬于這個(gè)域名之中,否則不會(huì)轉(zhuǎn)到你希望的鏈接。
這個(gè)方式,讓我們的微信應(yīng)用程序后臺(tái)可以獲得用戶的標(biāo)識(shí)、用戶詳細(xì)信息等,我們就可以用來(lái)綁定和用戶相關(guān)的業(yè)務(wù)信息了,如上面提到的圖書館借閱信息,送水客戶的信息,客戶的積分信息,或者可以和后臺(tái)賬號(hào)進(jìn)行關(guān)聯(lián)實(shí)現(xiàn)更加復(fù)雜的應(yīng)用等。用戶的身份信息如此重要,如果結(jié)合到我們的CRM系統(tǒng)、業(yè)務(wù)管理系統(tǒng),就可以發(fā)揮用戶信息應(yīng)用的作用了。
以上就是我對(duì)這個(gè)類型菜單鏈接的應(yīng)用了解,具體還需要進(jìn)一步深化其應(yīng)用,希望和大家共同探討這方面的應(yīng)用場(chǎng)景。
?更多C#? ??? WeChat ?? ?? ? WeChat ?? ??? ??? ?? ?? ??相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)