Foxtable(狐表)用户栏目专家坐堂 → 微信中获取用户的地理位置


  共有5511人关注过本帖树形打印复制链接

主题:微信中获取用户的地理位置

帅哥哟,离线,有人找我吗?
ap9709130
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/5/11 9:36:00 [只看该作者]

我就是把例子改了下,很简单的,代码如下:
Dim wb As New weui
        wb.AppendHTML("<script src='http://res.wx.qq.com/open/js/jweixin-1.0.0.js'></script>",True) '引入JS-SDK库
        wb.AppendHTML("<script src='./hito/jssdk.js'></script>") '引入脚本文件
        '在页面注入权限验证配置
        Dim st As New Date(1970,1,1,8,0,0)
        Dim appid As String = "wxa05c11a75642d325" 'CorpID
        Dim timestamp As Integer = CInt((Date.Now - st).TotalSeconds()) '时间戳
        Dim noncestr As String = Rand.NextString(16) '随机字符
        Dim url As String  = e.Request.URL.ToString '当前页面地址
        Dim signature As String = Functions.Execute("GetJsSignature", noncestr, timestamp, url) '生成权限验证签名
        Dim cfg As String = "wx.config({appId:'{0}',timestamp:{1},nonceStr:'{2}',signature:'{3}',jsApiList:['getLocation']});"
        wb.AppendHTML("<script>" & CExp(cfg,appid,timestamp,noncestr,signature) & "</script>",True)
        '开始正常生成网页内容
        wb.AddForm("","form1","test.htm")
        With wb.AddInputGroup("form1","ipg1","产品输入")
            .AddInput("product","产品","text")
            With .AddInputCell("ic1")
                .AddLabel("lbh","编号",0)
                .AddInput("number","text",1)
                .AddVcodeButton("scan","扫码输入",2) '增加二维码扫描按钮,2表示显示在右边
            End With
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "确定", "submit")
        End With
        e.WriteString(wb.Build) '生成网页

JS 代码如下 :

wx.ready(function () {
    document.getElementById('scan').onclick = function () {
        wx.getLocation({
            type: 'wgs84',
            success: function (res) {
                document.getElementById('number').value = res.latitude;
document.getElementById('product').value = res.longitude;
            }
        });
    };
});
wx.error(function (res) {
    //alert(res.errMsg);
});

这样就可以获得地理位置了。我还把这个地理位置在百度地图里看了,定位还是挺准的。

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/11 10:37:00 [只看该作者]

 谢谢分享。

 回到顶部
帅哥哟,离线,有人找我吗?
xietan417
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:721 积分:6391 威望:0 精华:0 注册:2011/6/26 11:45:00
  发帖心情 Post By:2017/5/11 11:00:00 [只看该作者]

谢谢分享!

 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/5/19 10:45:00 [只看该作者]

老师

今天想把这个板块整合到网页中去,发现一个问题。如果网页中的e.GetValues中有中文,是不能认证成功的,这个情况要怎么处理?

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/19 10:57:00 [只看该作者]

 你可以对中文字符进行一下编码

 

http://www.foxtable.com/mobilehelp/scr/0241.htm

 

 类似

 


Dim ul1 As String = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state={2}#wechat_redirect"
Dim ul2 As String = UrlEncode("http://wexin.foxtable.com")
ul1 = CExp(ul1,"wxa31aba4cd83af57e",ul2,"123")
Output.Show(ul1)


 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/5/19 11:25:00 [只看该作者]

老师

Dim wb As New weui
        wb.AppendHTML("<script src='http://res.wx.qq.com/open/js/jweixin-1.0.0.js'></script>",True) '引入JS-SDK库
        wb.AppendHTML("<script src='./hito/jssdk.js'></script>") '引入脚本文件
        '在页面注入权限验证配置
        Dim st As New Date(1970,1,1,8,0,0)
        Dim appid As String = "wxa05c11a75642d325" 'CorpID
        Dim timestamp As Integer = CInt((Date.Now - st).TotalSeconds()) '时间戳
        Dim noncestr As String = Rand.NextString(16) '随机字符
        Dim url As String  = e.Request.URL.ToString '当前页面地址
        Dim signature As String = Functions.Execute("GetJsSignature", noncestr, timestamp, url) '生成权限验证签名
        Dim cfg As String = "wx.config({appId:'{0}',timestamp:{1},nonceStr:'{2}',signature:'{3}',jsApiList:['getLocation']});"
        wb.AppendHTML("<script>" & CExp(cfg,appid,timestamp,noncestr,signature) & "</script>",True)
        '开始正常生成网页内容
        wb.AddForm("","form1","test.htm")
        With wb.AddInputGroup("form1","ipg1","产品输入")
            .AddInput("product","产品","text")
            With .AddInputCell("ic1")
                .AddLabel("lbh","编号",0)
                .AddInput("number","text",1)
                .AddVcodeButton("scan","扫码输入",2) '增加二维码扫描按钮,2表示显示在右边
            End With
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "确定", "submit")
        End With
        e.WriteString(wb.Build) '生成网页

这个代码没有问题,可以证成功,但是如果 test.htm?id = 我 ,就会认证失败。你的15楼的代码在哪里加?如果 Dim url As String  = e.Request.URL.ToString '当前页面地址 改成:
Dim url As String  = UrlEncode(e.Request.URL.ToString) '当前页面地址

也会失败的。


 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/5/19 11:31:00 [只看该作者]

我已经把 e.Request.URL.ToString  show 出来,可以显示中文。如果用 UrlEncode(e.Request.URL.ToString)里面会没有中文了,但是都不可以认证成功!

 回到顶部
帅哥,在线噢!
有点蓝
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107028 积分:544371 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/5/19 11:59:00 [只看该作者]

看看e.Request.URL.ToString输出的是什么内容?

这里不能用UrlEncode

用官方的工具看生成的字符和签名有什么不同

 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6842 积分:43288 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2017/6/1 15:12:00 [只看该作者]

源文件可以上传一下吗?

 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6842 积分:43288 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2017/6/1 15:13:00 [只看该作者]

以下是引用ap9709130在2017/5/11 9:36:00的发言:
我就是把例子改了下,很简单的,代码如下:
Dim wb As New weui
        wb.AppendHTML("<script src='http://res.wx.qq.com/open/js/jweixin-1.0.0.js'></script>",True) '引入JS-SDK库
        wb.AppendHTML("<script src='./hito/jssdk.js'></script>") '引入脚本文件
        '在页面注入权限验证配置
        Dim st As New Date(1970,1,1,8,0,0)
        Dim appid As String = "wxa05c11a75642d325" 'CorpID
        Dim timestamp As Integer = CInt((Date.Now - st).TotalSeconds()) '时间戳
        Dim noncestr As String = Rand.NextString(16) '随机字符
        Dim url As String  = e.Request.URL.ToString '当前页面地址
        Dim signature As String = Functions.Execute("GetJsSignature", noncestr, timestamp, url) '生成权限验证签名
        Dim cfg As String = "wx.config({appId:'{0}',timestamp:{1},nonceStr:'{2}',signature:'{3}',jsApiList:['getLocation']});"
        wb.AppendHTML("<script>" & CExp(cfg,appid,timestamp,noncestr,signature) & "</script>",True)
        '开始正常生成网页内容
        wb.AddForm("","form1","test.htm")
        With wb.AddInputGroup("form1","ipg1","产品输入")
            .AddInput("product","产品","text")
            With .AddInputCell("ic1")
                .AddLabel("lbh","编号",0)
                .AddInput("number","text",1)
                .AddVcodeButton("scan","扫码输入",2) '增加二维码扫描按钮,2表示显示在右边
            End With
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "确定", "submit")
        End With
        e.WriteString(wb.Build) '生成网页

JS 代码如下 :

wx.ready(function () {
    document.getElementById('scan').onclick = function () {
        wx.getLocation({
            type: 'wgs84',
            success: function (res) {
                document.getElementById('number').value = res.latitude;
document.getElementById('product').value = res.longitude;
            }
        });
    };
});
wx.error(function (res) {
    //alert(res.errMsg);
});

这样就可以获得地理位置了。我还把这个地理位置在百度地图里看了,定位还是挺准的。


源文件可以上传一下吗?


 回到顶部
总数 21 上一页 1 2 3 下一页