微信公众号获取用户地理位置
很久没搞微信的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}×tamp={$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
微信公众号获取用户地理位置相关推荐
- python 公众号 关注者位置_微信公众号获取用户地理位置
很久没搞微信的js-sdk了, 搞了一下午, 刷新页面老是失败, 没想到结合经验给大家展示下获取用户地理位置 第一步:登录微信公众号https://mp.weixin.qq.com 首先先设置最基本的 ...
- 微信公众号获取用户地理位置,转换百度坐标
开发微信公众号,首先要先成为开发者.请自行百度. 在微信公众平台开启接口权限--接口权限-网页服务-地理位置-开启 JSSDK使用步骤 步骤一:绑定域名 先登录微信公众平台进入"公众号设置& ...
- php微信jssdk获取位置,微信公众号获取用户地理位置
微信公众开放平台 接口文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140841 获取用户地理位置(需要用户点击同 ...
- php 微信获取门店列表,【转载】微信公众号获取用户地理位置并列出附近的门店...
思路分析: 1.在微信公众号内获取用户地理位置 需要js-sdk签名包(关于如何获取文档有介绍) 2.根据获取的地理位置ajax去后台请求,通过sql语句,查询中距离最近的门店(sql语句在网上搜的, ...
- java查看附近门店_微信公众号获取用户地理位置并列出附近的门店的示例代码...
思路分析: 1.在微信公众号内获取用户地理位置 需要js-sdk签名包(关于如何获取文档有介绍) 2.根据获取的地理位置ajax去后台请求,通过sql语句,查询中距离最近的门店(sql语句在网上搜的, ...
- PHP微信公众号获取用户地理位置,获取用户地理位置
开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会弹框让用户确认是否允许公众号使用其地理位置.弹框只在关注后出现一次,用户以后可以在公众号详情页面进行操作. 第三方在收到地理位置上报信息 ...
- PHP微信公众号,获取用户地理位置 定位 经纬度
<?php //php插件下载地址: https://files.cnblogs.com/files/fan-bk/jssdk_php.rar //建立一个php文件 require_once ...
- php微信地理位置,php,微信公众号,获取用户地理位置 定位 经纬度
//php插件下载地址: https://files.cnblogs.com/files/fan-bk/jssdk_php.rar //建立一个php文件 require_once "jss ...
- PHP 公众号获取用户地理位置,微信公众号接口配置,并利用接口获取用户地理位置...
微信公众号获取用户地理位置有两种方法: 一是在进入微信公众号时获取,然后微信服务器将位置传到我们的服务器. 二是在公众号网页中,通过 JS-SDK 获取. 本文介绍的是第一种方法,第二种方法的部分内容 ...
- tp5微信公众号获取用户openid_tp5+微信公众号获取用户基本信息
获取用户基本信息(UnionID机制) 获取用户基本信息(UnionID机制) 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯 ...
最新文章
- 1024 Palindromic Number
- pycharm中设置pytest方式(Mac)
- go build 参数_从0开始Go语言,用Golang搭建网站
- Apache OpenOffice 下载量突破一亿次
- qt中数据库操作总结
- fcntl函数之文件锁 F_SETLKW
- 哥谈的是语言,不是寂寞
- 基于JAVA+SpringMVC+Mybatis+MYSQL的酒店预订系统
- 关键词之间用分号_如何选择关键词?快看这几个要点
- ajax 共有6种加载方式 (自己总结简单明了)
- 《Think Python》第15章学习笔记
- Simulink之晶闸管(可控硅SCR)
- 程序员交接文档格式(自己整理,仅供参考,付md文档)
- 简述ip地址的abc类如何划分_ip地址的分类abc类的具体含义与分类方法
- 揭秘骗术:黑客人肉、查开房的灰色项目
- 安卓各版本大变化(Android 6.0到10.0),兼容适配
- mysql 关闭防火墙 命令_CentOS7关闭防火墙命令
- git查看状态和修改信息
- (13.1.2)PMBOK之二:五大过程组及其涉及的输入、输出、工具技术
- iOS Technical Support For All-AFastRecord
热门文章
- 计算机等级考试的资料,计算机等级考试(资料).pdf
- ps软件1.基础工具2.工具快捷键3.图片基本操作4.撤回方法5.抠图
- 美国大学 计算机专业 排名,2019美国大学计算机专业排名
- 什么是工业DTU?工业DTU特点及应用领域分析
- 动态链表头插法 和 动态尾插法
- 双绞线的规范和制作经验谈
- 视频直播涉及的上行带宽问题~~
- 为什么要分析网络流量?
- 实战案例丨腾讯安全托管服务MSS助力数字广东重保期间“0事故”
- 响铃:云+峰会再召开,腾讯云的政企合作玩得怎么样了?