很久没搞微信的js-sdk了, 搞了一下午, 刷新页面老是失败, 没想到结合经验给大家展示下获取用户地理位置

第一步:登录微信公众号https://mp.weixin.qq.com

首先先设置最基本的配置(这一步大家应该都会)

第二步:点击公众平台右上角展开点击功能设置

配置网页授权域名

填写项目所使用的的域名并将文件下载放到项目根目录

然后在配置js安全域名同样将要下载的txt文件放到项目目录也可以是二级目录, 如果放到二级目录域名后面要就目录路径哦

保存之后:

第三步: 公众号左边栏,开发->子栏目:接口权限

开启用户获取地理位置

第四步:先在php服务端配置好js-sdk所需要的参数:appId, timestamp , noceStr, signature , jsApiList

function getSignPackage($appId,$appSecret) {$jsapiTicket = getJsApiTicket($appId,$appSecret);// 注意 URL 一定要动态获取,不能 hardcode.$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";$url = "{$protocol}{$_SERVER[HTTP_HOST]}{$_SERVER[REQUEST_URI]}";$timestamp = time();$nonceStr = createNonceStr();// 这里参数的顺序要按照 key 值 ASCII 码升序排序$string = "jsapi_ticket={$jsapiTicket}&noncestr={$nonceStr}&timestamp={$timestamp}&url={$url}";$signature = sha1($string);// var_dump($signature);die;$signPackage = array("appId"     => $appId,"nonceStr"  => $nonceStr,"timestamp" => $timestamp,"url"       => $url,"signature" => $signature,"rawString" => $string);return $signPackage; }function createNonceStr($length = 16) {$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";$str = "";for ($i = 0; $i < $length; $i++) {$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);}return $str;
}function getJsApiTicket($appId,$appSecret) {// jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT']."\jsapi_ticket.json"));// var_dump($data->expire_time);die;if ($data->expire_time < time()) {$accessToken = getAccessToken($appId,$appSecret);// 如果是企业号用以下 URL 获取 ticket// $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token={$accessToken}";$res = json_decode(httpGet($url));$ticket = $res->ticket;if ($ticket) {$data->expire_time = time() + 7000;$data->jsapi_ticket = $ticket;$fp = fopen($_SERVER['DOCUMENT_ROOT']."\jsapi_ticket.json", "w");fwrite($fp, json_encode($data));fclose($fp);}} else {$ticket = $data->jsapi_ticket;}return $ticket;}function getAccessToken($appId,$appSecret) {// access_token 应该全局存储与更新,以下代码以写入到文件中做示例$data = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT']."\access_token.json"));if ($data->expire_time < time()) {// 如果是企业号用以下URL获取access_token// $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appId}&secret={$appSecret}";$res = json_decode(httpGet($url));$access_token = $res->access_token;if ($access_token) {$data->expire_time = time() + 7000;$data->access_token = $access_token;$fp = fopen($_SERVER['DOCUMENT_ROOT']."\jsapi_ticket.json", "w");fwrite($fp, json_encode($data));fclose($fp);}} else {$access_token = $data->access_token;}return $access_token;
}function httpGet($url) {$curl = curl_init();curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_TIMEOUT, 500);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);curl_setopt($curl, CURLOPT_URL, $url);$res = curl_exec($curl);curl_close($curl);return $res;
}

然后接下来调用官方微信地理位置接口

这段代码就是如果你的微信接口走不通就会执行此方法 , 还是加上此代码为好

wx.error(function(res){

alert("接口调取失败")

    });
使用官方接口
res.checkResult.getLocation(接口名字) 成功true  失败false
success: function (res) {
            // alert(JSON.stringify(res));// alert(JSON.stringify(res.checkResult.getLocation));if (res.checkResult.getLocation == false) {alert('你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!');return;}}
 

<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script>wx.config({debug: true,appId: '<?php echo $signPackage["appId"]; ?>',timestamp: <?php echo $signPackage["timestamp"]; ?>,nonceStr: '<?php echo $signPackage["nonceStr"]; ?>',signature: '<?php echo $signPackage["signature"]; ?>',jsApiList: [// 所有要调用的 API 都要加到这个列表中'getLocation',]
});wx.ready(function () {wx.checkJsApi({jsApiList: ['getLocation'],success: function (res) {// alert(JSON.stringify(res));// alert(JSON.stringify(res.checkResult.getLocation));if (res.checkResult.getLocation == false) {alert('你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!');return;}}}); wx.error(function(res){alert("接口调取失败")});wx.getLocation({success: function (res) {alert(JSON.stringify(res));},cancel: function (res) {alert('用户拒绝授权获取地理位置');}});
});</script>

公众号一定要记得配置js安全域名, 这是一个会可能被遗忘的步骤, 此时如果你进入微信公众号页面 询问你获取地理位置弹框, 授权之后, 会弹框经纬度说明你成功了

转自:https://www.cnblogs.com/liuxinruif0/p/8652461.html

微信公众号获取用户地理位置相关推荐

  1. python 公众号 关注者位置_微信公众号获取用户地理位置

    很久没搞微信的js-sdk了, 搞了一下午, 刷新页面老是失败, 没想到结合经验给大家展示下获取用户地理位置 第一步:登录微信公众号https://mp.weixin.qq.com 首先先设置最基本的 ...

  2. 微信公众号获取用户地理位置,转换百度坐标

    开发微信公众号,首先要先成为开发者.请自行百度. 在微信公众平台开启接口权限--接口权限-网页服务-地理位置-开启 JSSDK使用步骤 步骤一:绑定域名 先登录微信公众平台进入"公众号设置& ...

  3. php微信jssdk获取位置,微信公众号获取用户地理位置

    微信公众开放平台 接口文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140841 获取用户地理位置(需要用户点击同 ...

  4. php 微信获取门店列表,【转载】微信公众号获取用户地理位置并列出附近的门店...

    思路分析: 1.在微信公众号内获取用户地理位置 需要js-sdk签名包(关于如何获取文档有介绍) 2.根据获取的地理位置ajax去后台请求,通过sql语句,查询中距离最近的门店(sql语句在网上搜的, ...

  5. java查看附近门店_微信公众号获取用户地理位置并列出附近的门店的示例代码...

    思路分析: 1.在微信公众号内获取用户地理位置 需要js-sdk签名包(关于如何获取文档有介绍) 2.根据获取的地理位置ajax去后台请求,通过sql语句,查询中距离最近的门店(sql语句在网上搜的, ...

  6. PHP微信公众号获取用户地理位置,获取用户地理位置

    开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会弹框让用户确认是否允许公众号使用其地理位置.弹框只在关注后出现一次,用户以后可以在公众号详情页面进行操作. 第三方在收到地理位置上报信息 ...

  7. PHP微信公众号,获取用户地理位置 定位 经纬度

    <?php //php插件下载地址: https://files.cnblogs.com/files/fan-bk/jssdk_php.rar //建立一个php文件 require_once ...

  8. php微信地理位置,php,微信公众号,获取用户地理位置 定位 经纬度

    //php插件下载地址: https://files.cnblogs.com/files/fan-bk/jssdk_php.rar //建立一个php文件 require_once "jss ...

  9. PHP 公众号获取用户地理位置,微信公众号接口配置,并利用接口获取用户地理位置...

    微信公众号获取用户地理位置有两种方法: 一是在进入微信公众号时获取,然后微信服务器将位置传到我们的服务器. 二是在公众号网页中,通过 JS-SDK 获取. 本文介绍的是第一种方法,第二种方法的部分内容 ...

  10. tp5微信公众号获取用户openid_tp5+微信公众号获取用户基本信息

    获取用户基本信息(UnionID机制) 获取用户基本信息(UnionID机制) 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯 ...

最新文章

  1. 1024 Palindromic Number
  2. pycharm中设置pytest方式(Mac)
  3. go build 参数_从0开始Go语言,用Golang搭建网站
  4. Apache OpenOffice 下载量突破一亿次
  5. qt中数据库操作总结
  6. fcntl函数之文件锁 F_SETLKW
  7. 哥谈的是语言,不是寂寞
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的酒店预订系统
  9. 关键词之间用分号_如何选择关键词?快看这几个要点
  10. ajax 共有6种加载方式 (自己总结简单明了)
  11. 《Think Python》第15章学习笔记
  12. Simulink之晶闸管(可控硅SCR)
  13. 程序员交接文档格式(自己整理,仅供参考,付md文档)
  14. 简述ip地址的abc类如何划分_ip地址的分类abc类的具体含义与分类方法
  15. 揭秘骗术:黑客人肉、查开房的灰色项目
  16. 安卓各版本大变化(Android 6.0到10.0),兼容适配
  17. mysql 关闭防火墙 命令_CentOS7关闭防火墙命令
  18. git查看状态和修改信息
  19. (13.1.2)PMBOK之二:五大过程组及其涉及的输入、输出、工具技术
  20. iOS Technical Support For All-AFastRecord

热门文章

  1. 计算机等级考试的资料,计算机等级考试(资料).pdf
  2. ps软件1.基础工具2.工具快捷键3.图片基本操作4.撤回方法5.抠图
  3. 美国大学 计算机专业 排名,2019美国大学计算机专业排名
  4. 什么是工业DTU?工业DTU特点及应用领域分析
  5. 动态链表头插法 和 动态尾插法
  6. 双绞线的规范和制作经验谈
  7. 视频直播涉及的上行带宽问题~~
  8. 为什么要分析网络流量?
  9. 实战案例丨腾讯安全托管服务MSS助力数字广东重保期间“0事故”
  10. 响铃:云+峰会再召开,腾讯云的政企合作玩得怎么样了?