搜尋
首頁微信小程式微信開發C#開發微信入口網站及應用-微信選單的多種表現方式介紹

在前面一系列文章中,我們可以看到微信自訂選單的重要性,可以說微信公眾號帳號中,選單是使用者的第一印象,我們要規劃好這些選單的內容,佈局等資訊。根據微信選單的定義,我們可以看到,一般選單主要分為兩種,一種是普通的Url選單(類型為View的選單),一種是事件選單(類型為Click的選單),一般情況下,微信的Url選單,是無法獲得使用者的任何資訊的,但微信使用者資訊非常重要,因此也提供了另外一種方式(類似重定向的方式)來給我們使用,本篇主要介紹這種重新定向的方式選單的使用,以使我們能夠盡可能和使用者進行互動。

1、微信自訂選單的分類

微信對自訂選單的要求:目前自訂選單最多包括3個一級選單,每個一級選單最多包含5個二級選單。一級選單最多4個漢字,二級選單最多7個漢字,多出來的部分將會以「...」取代。

根據選單的分類,我們可以把它透過圖形進行分類展示:

C#開發微信入口網站及應用-微信選單的多種表現方式介紹

我對各種微信公眾號進行了解,發現多數帳號採用的都是普通的View類型的選單連結方式,透過它們連結到自己的微網站上,但也有一些做的好的,如省立中山圖書館,就能通過重定向的方式,提供一個綁定圖書館用戶和微信OpenID的入口,綁定後,用戶您可以查看借閱的書籍,然後可以透過一鍵續借功能來實現圖書的快速續借功能。

對於這種重定向類型的Url選單事件,微信的說明如下:

如果使用者在微信中(Web微信除外)訪問公眾號的第三方網頁,公眾號開發者可以透過此介面取得目前使用者基本資訊(包括暱稱、性別、城市、國家)。利用使用者資訊,可以實現體驗最佳化、使用者來源統計、帳號綁定、使用者身分鑑權等功能。 請注意,「獲取用戶基本資訊接口是在用戶和公眾號產生消息交互時,才能根據用戶OpenID獲取用戶基本信息,而網頁授權的方式獲取用戶基本信息,則無需消息交互,只是用戶進入到公眾號的網頁,就可彈出請求用戶授權的介面,用戶授權後,就可獲得其基本資訊(此過程甚至不需要用戶已經關注公眾號。)」

C#開發微信入口網站及應用-微信選單的多種表現方式介紹

2、重定向類型選單的URL

上面說了,重定向類型的選單分成了兩種,其實他們也只是參數Scope類型的不同,其他部分還是一樣的。

為了展示,我們在假設用戶點擊選單的時候,切換到http://www.iqidi.com/testwx.ashx這個頁面,並帶過來當前用戶的OpenID等參數資訊

對於scope=snsapi_base方式的連結如下:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3d81fc2886d86526&redirect_uri=http%3A%2F%2Fwww.iqidi.com%%2Ftestw.capixb; wechat_redirect 

而對於scope=snsapi_userinfo方式的連結如下:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3d81fc2886d86526&www.Ft.com .ashx&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect 

不過他們給手機客戶端的體驗是不同的,第一種可以平滑切換,但是第二種會彈出一個對話框供用戶確認才能繼續。

C#開發微信入口網站及應用-微信選單的多種表現方式介紹

為了示範上面兩種取得資料的不同,我把他們傳過來的code的值,使用者換取OpenID後進行使用者資訊的解析,他們兩者的結果都是一樣了。具體測試介面如下所示。

C#開發微信入口網站及應用-微信選單的多種表現方式介紹

其中TestWX.ashx的頁面後台程式碼如下:

    /// <summary>
    /// TestWX 的摘要说明    /// </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接口,获取AccessTokenResult的数据,这里面有用户的OpenID

AccessTokenResult result = api.GetAccessToken(appId, appSecret, code);

当正常调用后,我们把用户标识的OpenID进一步进行解析,调用API获取用户的详细信息,具体代码如下所示。

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());
                        }

3、重定向链接菜单的用途

这种菜单就是需要指定域名,在微信后台中进行设置,重定向的链接必须属于这个域名之中,否则不会转到你希望的链接。

这个方式,让我们的微信应用程序后台可以获得用户的标识、用户详细信息等,我们就可以用来绑定和用户相关的业务信息了,如上面提到的图书馆借阅信息,送水客户的信息,客户的积分信息,或者可以和后台账号进行关联实现更加复杂的应用等。用户的身份信息如此重要,如果结合到我们的CRM系统、业务管理系统,就可以发挥用户信息应用的作用了。

以上就是我对这个类型菜单链接的应用了解,具体还需要进一步深化其应用,希望和大家共同探讨这方面的应用场景。

更多C#開發微信入口網站及應用-微信選單的多種表現方式介紹相关文章请关注PHP中文网!


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境