有没有办法使用谷歌的API来检索用户的当前邮政编码,而无需明确征求他们的许可?我知道谷歌现在使用OAuth 2.0,这是一种身份验证协议,用户必须允许对特定服务的权限。但是,我想找到用户的位置,而不必询问他们!
这可能吗?我对翻译 IP 地址不感兴趣,因为它们通常会返回不正确的结果。同样,HTML5的地理位置功能也不起作用,因为它也需要用户许可。
你肯定必须使用谷歌(或Facebook...或[在此处插入社交网络]),以便访问存储在第三方网站上的有关该用户的任何信息(例如家庭或工作"邮政编码")。但是,一旦通过身份验证,您将无法获得用户的当前邮政编码或位置。 您想要他们当前的位置或家庭住址还是工作地址 - 您可能需要澄清。 无论如何,如果你想要用户的当前位置,我建议使用HTML5地理位置API。
地理位置 API 的最简单用法如下所示:
function get_location() {
navigator.geolocation.getCurrentPosition(show_map);
}
这没有检测,没有错误处理,也没有选项。您的 Web 应用程序可能至少应该包含其中的前两个。若要检测对地理位置 API 的支持,可以使用现代化:
function get_location() {
if (Modernizr.geolocation) {
navigator.geolocation.getCurrentPosition(show_map);
} else {
// no native support; maybe try Gears?
}
}
HTML5 地理定位资源:
- http://diveintohtml5.info/geolocation.html
- http://html5doctor.com/finding-your-position-with-geolocation/
- HTML5 地理位置 API 的 W3 规范:http://dev.w3.org/geo/api/spec-source.html
我以前不得不在类似的情况下做类似的事情。我得出的答案可能不是最漂亮的,但它确实有效,你可以得到一个邮政编码。
有一些类似的服务,但我发现MaxMind非常适合为我提供一个非常准确的纬度(至少对于城市/邮政编码读数)。这摆脱了你必须在 php 中自己处理这个问题。
麦克思通链接
警告:您必须将链接返回给maxmind,或者购买月度许可证。抱歉,但您可以四处寻找其他服务 - 否则您必须自己制作一个。
因此,我们的想法是您在页面上包含他们的脚本 - 现在您在页面上拥有这些功能。
function geoip_country_code() { return 'US'; }
function geoip_country_name() { return 'United States'; }
function geoip_city() { return 'San Diego'; }
function geoip_region() { return 'CA'; }
function geoip_region_name() { return 'California'; }
function geoip_latitude() { return '32.7153'; }
function geoip_longitude() { return '-117.1573'; }
function geoip_postal_code() { return ''; }
function geoip_area_code() { return '619'; }
function geoip_metro_code() { return '825'; }
从这里你需要做一些地理编码(通过谷歌或选择另一个)。从地理编码中获取响应,您可以循环浏览结果并提取邮政编码。如果您需要有关该步骤的更多输入,我可能会挖掘更多脚本。
可能不是最优雅的方法,但我也受限于无法使用地理位置,并且处于仅JavaScript的环境中。这对我有用。干杯。