• 微信开发之 获取用户地址


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Web.Security;
    using System.Web.Script.Serialization;
    using sohovan.com.wxapi;
    
    namespace WXKF
    {
        public class JsApi
        {
            JavaScriptSerializer Jss = new JavaScriptSerializer();
    
            public JsApi() { }
    
            #region 验证JsApi权限配置 
            /// <summary>
            /// 获取JsApi权限配置的数组/四个参数
            /// </summary>
            /// <param name="Appid">应用id</param>
            /// <param name="Appsecret">密钥</param>
            /// <returns>json格式的四个参数</returns>
            public string GetJsApiInfo(string Appid, string Appsecret)
            {
                string timestamp = CommonMethod.CommonMethod.ConvertDateTimeInt(DateTime.Now).ToString();//生成签名的时间戳
                string nonceStr = CommonMethod.CommonMethod.GetRandCode(16);//生成签名的随机串
                string url = System.Web.HttpContext.Current.Request.Url.AbsoluteUri.ToString();//当前的地址
                string jsapi_ticket = "";
                //ticket 缓存7200秒
                if (System.Web.HttpContext.Current.Session["jsapi_ticket"] == null)
                {
                    jsapi_ticket = CommonMethod.CommonMethod.WebRequestPostOrGet("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + BasicApi.GetTokenSession(Appid, Appsecret) + "&type=jsapi", "");
                    System.Web.HttpContext.Current.Session["jsapi_ticket"] = jsapi_ticket;
                    System.Web.HttpContext.Current.Session.Timeout = 7200;
                }
                else
                {
                    jsapi_ticket = System.Web.HttpContext.Current.Session["jsapi_ticket"].ToString();
                }
                Dictionary<string, object> respDic = (Dictionary<string, object>)Jss.DeserializeObject(jsapi_ticket);
                jsapi_ticket = respDic["ticket"].ToString();//获取ticket
                string[] ArrayList = { "jsapi_ticket=" + jsapi_ticket, "timestamp=" + timestamp, "noncestr=" + nonceStr, "url=" + url };
                Array.Sort(ArrayList);
                string signature = string.Join("&", ArrayList);
                signature = FormsAuthentication.HashPasswordForStoringInConfigFile(signature, "SHA1").ToLower();
                return "{"appId":"" + Appid + "", "timestamp":" + timestamp + ","nonceStr":"" + nonceStr + "","signature":"" + signature + ""}";
            }
            #endregion
        }
    }
    

      

     public string appId;
            public string timestamp;
            public string nonceStr;
            public string signature;
            protected void Page_Load(object sender, EventArgs e)
            {
                JsApi jsapi = new JsApi();
                string data = jsapi.GetJsApiInfo("***", "***");
                JObject jo = (JObject)JsonConvert.DeserializeObject(data);
                appId = jo["appId"].ToString();
                timestamp = jo["timestamp"].ToString();
                nonceStr = jo["nonceStr"].ToString();
                signature = jo["signature"].ToString();
                //Response.Write("<script type='text/javascript'>btn();</script>");
                // ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>btn();</script>"); 
    
            }
    

      

        <title>请稍等,定位中。。。</title>
        <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
        <script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
        <script src="Scripts/jquery-1.7.1.min.js"></script>
         <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=IWf1r4wh9pdpXUPOwGvkLxYW"></script>
        <script src="Scripts/cvi_busy_lib.js"></script>
     
        <script>
            function wxconfig() {
                wx.config({
                    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                    appId: '<% =appId%>', // 必填,公众号的唯一标识
                    timestamp: '<% =timestamp%>', // 必填,生成签名的时间戳
                    nonceStr: '<% =nonceStr%>', // 必填,生成签名的随机串
                    signature: '<% =signature%>',// 必填,签名,见附录1
                    jsApiList: [
                          'onMenuShareTimeline',
                           'onMenuShareAppMessage',
                           'onMenuShareQQ',
                           'onMenuShareWeibo',
                           'getLocation',
                           'openLocation'
    
                    ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
                });
            }
            var getParam = function (name) {
                var search = document.location.search;
                var pattern = new RegExp("[?&]" + name + "=([^&]+)", "g");
                var matcher = pattern.exec(search);
                var items = null;
                if (null != matcher) {
                    try {
                        items = decodeURIComponent(decodeURIComponent(matcher[1]));
                    } catch (e) {
                        try {
                            items = decodeURIComponent(matcher[1]);
                        } catch (e) {
                            items = matcher[1];
                        }
                    }
                }
                return items;
            };
            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; // 位置精度  
                      alert("维度:" + latitude + "     经度:" + longitude);
                    
                    },
                    cancel: function (res) {
                        alert(res);
                        alert('用户拒绝授权获取地理位置');
                    }
                });
            });
            wxconfig();
    
    
         
        </script>    
    

      

    喜欢的朋友请帮忙点个赞!!!
  • 相关阅读:
    Vue 过滤器入门
    Vue 常用指令
    git 报错 error: failed to push some refs to .....
    CSS 小结笔记之文字溢出处理
    CSS 小结笔记之元素的隐藏与显示
    CSS 小结笔记之定位
    CSS 小结笔记之清除浮动
    CSS 小结笔记之浮动
    CSS 小结笔记之盒子模型
    CSS 实例之文字的凸起与凹陷
  • 原文地址:https://www.cnblogs.com/mchuang/p/5156946.html
Copyright © 2020-2023  润新知