微信开发时网页获取用户位置 wx.getLocation方法体不执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信开发时网页获取用户位置 wx.getLocation方法体不执行相关的知识,希望对你有一定的参考价值。

wx.config( debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '$appId', // 必填,公众号的唯一标识 timestamp: '$timestamp' , // 必填,生成签名的时间戳 nonceStr: '$nonceStr', // 必填,生成签名的随机串 signature: '$signature',// 必填,签名,见附录1 jsApiList: [ 'getLocation' ] ); wx.ready(function() // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 //alert('验证通过'); //document.getElementById('getLocation_status').value="1"; alert('abc'); wx.getLocation( type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02' success: function (res) alert(JSON.stringify(res)); var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90 var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。 var speed = res.speed; // 速度,以米/每秒计 var accuracy = res.accuracy; // 位置精度 , cancel: function (res) alert(res); //add_map(0,0); ); ); wx.error(function(res) alert('验证错误'); // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 );只弹alert('abc'),方法体不执行

参考技术A 回调地址可以为顶级域名也可以为二级域名,这个没有严格限制。
在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的开发者中心页配置授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加http://等协议头;本回答被提问者采纳
参考技术B 兄弟怎么解决的,我也是这个问题

微信网页开发

微信网站一般是先要微信网页授权后获取到access_token,才有资格获取用户信息的,所以如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。

第一步是先获取用户授权(具体的请看微信开发者文档):

      授权也分两种:静态授权和手动授权:

        关于网页授权的两种scope的区别说明

     1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

     2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。 

     3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

                 

1     /**
2      * 网页授权获取用户openid(静默授权)
3      */
4     public function getOpenid($code){
5         $url = ‘https://api.weixin.qq.com/sns/oauth2/access_token?appid=‘. Wxapi::APPID . ‘&secret=‘ . Wxapi::APPSECRET . ‘&code=‘ . $code . ‘&grant_type=authorization_code‘;
6         $result = json_decode($this->CurlGet($url),true);  
7         return $result;
8     }

 

 

请参考文档来理解:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

 

 

 1     /**
 2      * 网页授权获取用户基本信息(手动同意)
 3      */
 4     public function getUserInfo($code,$refresh_token){
 5         if(!empty($code)){
 6             //code换取网页授权access_token
 7             $url = ‘https://api.weixin.qq.com/sns/oauth2/access_token?appid=‘. Wxapi::APPID . ‘&secret=‘ . Wxapi::APPSECRET . ‘&code=‘ . $code . ‘&grant_type=authorization_code‘;
 8             $result = json_decode($this->CurlGet($url),true);  
 9         }else if(!empty($refresh_token)){
10             //刷新access_token
11             $url = ‘https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=‘ . Wxapi::APPID . ‘&grant_type=refresh_token&refresh_token=‘ . $refresh_token;
12             $result = json_decode($this->CurlGet($url),true);  
13             if(!empty($result[‘errcode‘])){
14                 $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . Wxapi::APPID . "&redirect_uri=" . $redirect_uri . "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";//refresh_token过期失效重新授权
15                 header("Location:$url");//跳转授权页面
16             }
17         }else{
18             return array(‘errcode‘ => ‘???‘,‘errmsg‘ => ‘请传入code或refresh_token‘);
19         }
20         
21         //错误返回处理
22         if(!empty($result[‘errcode‘])){
23             return $result;
24         }else{
25             //拉取用户信息
26             $url = ‘https://api.weixin.qq.com/sns/userinfo?access_token=‘ . $result[‘access_token‘] . ‘&openid=‘ . $result[‘openid‘] . ‘&lang=zh_CN‘;
27             $user_info = json_decode($this->CurlGet($url),true); 
28             $user_info[‘refresh_token‘] = $result[‘refresh_token‘];
29             
30             return $user_info;
31         }
32     }

 

以上是关于微信开发时网页获取用户位置 wx.getLocation方法体不执行的主要内容,如果未能解决你的问题,请参考以下文章

微信公众号开发及时获取当前用户Openid及注意事项

微信公众号用户与网站用户的绑定-登陆公众号时获取openid

微信公众号开发及时获取当前用户Openid及注意事项

微信公众平台网页开发实战--3.利用JSSDK在网页中获取地理位置(HTML5+jQuery)

微信公众平台网页开发实战--3.利用JSSDK在网页中获取地理位置(HTML5+jQuery)

前端对接微信公众号网页开发流程,前期配置