您的位置:首页 > 移动开发 > 微信开发

實作解析:微信開發重點摘要 (1) - 用戶同意授權碼

2015-11-26 11:21 429 查看
只要是牽涉到公眾平台,並需要取得用戶信息的相關操作,不外乎兩大要素:openidaccess code。而在取得 openidaccess code 之前,還有一個很重要的敲門磚,就是 code,筆者稱之為用戶同意授權碼,其作用在識別用戶是否同意微信應用發起的用戶公開訊息調用請求。也就是說,當微信應用需要獲取用戶的公開資訊時,會先向用戶發起一個授權同意頁面,若用戶點擊同意,就會以網址列傳參的方式給應用端返回授權碼,若用戶不同意授權,返回傳參時就不帶上授權碼。取得 code 的頁面,和取得 openidaccess code 的頁面可以不同,這邊簡單示範一下透過 asp + js / jquery,並以「靜默授權」的模式來獲取授權碼,使用其它語言的開發人員請自行靈活理解,要彈出常規授權頁面讓用戶點擊的,請自行調整網址的參數。

關鍵連結
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf7580d49be2667f5&redirect_uri=http%3a%2f%2fshop.whsjsoft.com%2fshop%2fconfirmOrder.aspx%3fwid%3d36%26openid%3d&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
參數說明

scope:授權方式,snsapi_base 為靜默授權,snsapi_userinfo 為頁面點擊授權。

範例程式

<!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://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: