标签:
只要是牽涉到公眾平台,並需要取得用戶信息的相關操作,不外乎兩大要素:openid 和 access_code。然而,在取得 openid 和 access_code 之前,還有一個很重要的敲門磚,就是 code,筆者稱之為「用戶同意授權碼」,其作用在識別用戶是否同意微信應用發起的「用戶公開訊息調用請求」。也就是說,當微信應用需要獲取用戶的公開資訊時,會先向用戶發起一個授權同意頁面,若用戶點擊同意,就會以網址列傳參的方式給應用端返回 code,若用戶不同意授權,就不帶上 code。而這一段在實作上,也可以採用「靜默授權」的方式取得授權碼。在實作上,取得「code」和「openid、access_code」是可以拆開的,這邊簡單示範一下透過 asp + js / jquery 來獲取用戶授權碼,其它開發環境的請自行靈活理解。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <meta name="format-detection" content="telephone=no" /> <script type="text/javascript" src="/shop/templates/shop1/js/jquery-1.10.2.min.js"></script> <script type="text/javascript"> $(document).ready(function () { // 將網址列參數解析為程式碼需要的東西,這個例子是將 code 的值拆出來。 function getQueryString(name) { var r = location.search.substr(1).match(new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i")); if ( r != null) return unescape(decodeURI(r[2])); else return null; } // 取得用戶授權碼後,要返回的頁面,一般都會跟「發起用戶公開訊息調用請求」的頁面相同。 // 同時也是官方網址所需要的參數 var redirect_uri = location.href; // 微信官方取得用戶授權碼的網址 var get_code_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf7580d49be2667f5&redirect_uri=" + redirect_uri + "&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect"; var access_code = getQueryString("code"); // 第一次載入本頁,勢必不會有 access_code,因此可以利用這個特性作頁面跳轉,將頁面轉到微信官方的網址,以獲取用戶同意授權碼。 if ( access_code == null || access_code == "") { location.href = get_code_url; } }); </script> </head> <body> <% ‘向微信官方取得「用戶同意授權碼」之後,會將授權碼以網址傳參的方式返回 ‘因此在接收授權碼的頁面,後台程式只要用 Request.QueryString() 就可以取得參數值 If (Len(Request.QueryString("code")) <= 0) Then Response.Write ("尚未获取") Else Response.Write("Access Code = " & Request.QueryString("code")) ‘跳轉到「獲取用戶公開訊息的頁面」 Response.Redirect "2.asp?code=" & Request.QueryString("code") %> <% End If %> </body> </html>
标签:
原文地址:http://www.cnblogs.com/hsw1976/p/4996808.html