一個項目須要在微信裏得到當前位置,因而就開始了個人微信開發之旅...html
微信JSSDK說明文檔
http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.htmlgit
JSSDK使用步驟
步驟一:綁定域名
綁定域名要求是一級域名.可是使用的時候能夠二級域名下的網頁仍然能夠使用該接口.api
步驟二:引入JS文件
http://res.wx.qq.com/open/js/jweixin-1.0.0.js
若是你的頁面啓用了https,務必引入 https://res.wx.qq.com/open/js/jweixin-1.0.0.js微信
步驟三:經過config接口注入權限驗證配置
配置這個會比較麻煩,最後講.
wx.config({
debug: true, // 開啓調試模式,調用的全部api的返回值會在客戶端alert出來,若要查看傳入的參數,能夠在pc端打開,參數信息會經過log打出,僅在pc端時纔會打印。
appId: '', // 必填,公衆號的惟一標識
timestamp: , // 必填,生成簽名的時間戳
nonceStr: '', // 必填,生成簽名的隨機串
signature: '',// 必填,簽名,見附錄1
jsApiList: [] // 必填,須要使用的JS接口列表,全部JS接口列表見附錄2
});微信開發
步驟四:經過ready接口處理成功驗證
wx.ready(function(){app
// config信息驗證後會執行ready方法,全部接口調用都必須在config接口得到結果以後,config是一個客戶端的異步操做,因此若是須要在頁面加載時就調用相關接口,則須把相關接口放在ready函數中調用來確保正確執行。對於用戶觸發時才調用的接口,則能夠直接調用,不須要放在ready函數中。異步
});函數
步驟五:經過error接口處理失敗驗證ui
wx.error(function(res){url
// config信息驗證失敗會執行error函數,如簽名過時致使驗證失敗,具體錯誤信息能夠打開config的debug模式查看,也能夠在返回的res參數中查看,對於SPA能夠在這裏更新簽名。
});
例如:獲取地理位置接口
wx.ready(function(){
wx.getLocation({
type: 'wgs84', // 默認爲wgs84的gps座標,若是要返回直接給openLocation用的火星座標,可傳入'gcj02'
success: function (res) {
var latitude = res.latitude; // 緯度,浮點數,範圍爲90 ~ -90
var longitude = res.longitude; // 經度,浮點數,範圍爲180 ~ -180。
var speed = res.speed; // 速度,以米/每秒計
var accuracy = res.accuracy; // 位置精度
}
});
});
具體的仍是看官方文檔清楚些.
關於步驟三的Config說明:
var wxConfigJson = {
debug: true, // 開啓調試模式,調用的全部api的返回值會在客戶端alert出來,若要查看傳入的參數,能夠在pc端打開,參數信息會經過log打出,僅在pc端時纔會打印。
appId: 'wx821bb7356e99a3a7', // 必填,公衆號的惟一標識
timestamp: 1446184841, // 必填,生成簽名的時間戳
nonceStr: '80262bec-7cd2-4b03-b366-97fab6e91cdd', // 必填,生成簽名的隨機串
signature: 'fd017d631d63cef32d5f25ea276911bcb0a29782', // 必填,簽名,見附錄1
jsApiList: ['getLocation'] // 必填,須要使用的JS接口列表,全部JS接口列表見附錄2
};
@Html.Raw(new WeChatJS_SDK_Config().GetConfig()) 生成上面的wxConfigJson
下面是我寫的WeChatJS_SDK_Config類,見笑了.
1 public class WeChatJS_SDK_Config 2 { 3 private string _appId; 4 private int _timestamp ;// 必填,生成簽名的時間戳 5 private string _nonceStr ;// 必填,生成簽名的隨機串 6 private string _url; 7 private string _sign; 8 9 public WeChatJS_SDK_Config() 10 { 11 _appId = AccountConfig._appID; 12 _timestamp = Core.GetTimestamp(); 13 _nonceStr = Guid.NewGuid().ToString(); 14 _url = HttpContext.Current.Request.Url.ToString(); 15 _sign = 16 String.Format("jsapi_ticket={0}&noncestr={1}×tamp={2}&url={3}", Jsapi_Ticket.GetJsapi_Ticket(), 17 _nonceStr, _timestamp, _url).Md5Entry("sha1").ToLower(); 18 } 19 20 /* Url方法的區別 21 *@Html.Raw("var originalString='"+HttpContext.Current.Request.Url.OriginalString+"';") 22 @Html.Raw("var rawUrl='"+HttpContext.Current.Request.RawUrl+"';") 23 @Html.Raw("var url='"+HttpContext.Current.Request.Url+"';") 24 25 var originalString = 'http://xb.hnjdkj.cn:80/index/home'; 26 var rawUrl = '/index/home'; 27 var url = 'http://xb.hnjdkj.cn/index/home';*@ 28 */ 29 public string GetConfig() 30 { 31 var res = string.Format( 32 "var wxConfigJson = {{debug: {0}, appId: '{1}', timestamp: {2},nonceStr: '{3}',signature: '{4}',jsApiList: ['getLocation'] }};", Kits.AppSettings("WeChatDebug"), _appId, _timestamp, _nonceStr, _sign); 33 return res; 34 } 35 36 }