有没有什么方法可以使用 Google 的 API 来检索用户当前的邮政编码,而无需明确征求他们的许可?我了解 Google 现在使用 OAuth 2.0,这是一种身份验证协议,用户必须允许对特定服务的权限。但是,我想找到用户的位置而无需询问他们!
这可能吗?我对翻译 IP 地址不感兴趣,因为它们通常会返回不正确的结果。同样,HTML5 的地理定位功能也无法使用,因为它也需要用户许可。
有没有什么方法可以使用 Google 的 API 来检索用户当前的邮政编码,而无需明确征求他们的许可?我了解 Google 现在使用 OAuth 2.0,这是一种身份验证协议,用户必须允许对特定服务的权限。但是,我想找到用户的位置而无需询问他们!
这可能吗?我对翻译 IP 地址不感兴趣,因为它们通常会返回不正确的结果。同样,HTML5 的地理定位功能也无法使用,因为它也需要用户许可。
我以前不得不在类似的情况下做类似的事情。我得到的答案可能不是最漂亮的东西,但它确实有效,你可以得到一个邮政编码。
有一些类似的服务,但我发现 MaxMind 非常擅长给我一个非常准确的纬度,经度(至少对于城市/邮政编码读数)。这使您不必在 php.ini 中自己处理这个问题。
警告:您必须将链接返回给 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 的环境中。这对我有用。干杯。
您肯定必须使用 Google(或 Facebook ... 或 [在此处插入社交网络])对用户进行 oAuth,以便访问存储在第 3 方中的有关该用户的任何信息(例如家庭或工作“邮政编码”)地点。但是一旦通过身份验证,您将无法获得用户当前的邮政编码或位置。您想要他们当前的位置还是他们的家庭地址或他们的工作地址 - 您可能需要澄清一下。无论如何,如果您想要用户的当前位置,我建议您使用 HTML5 地理定位 API。
地理定位 API 的最简单用法如下所示:
function get_location() {
navigator.geolocation.getCurrentPosition(show_map);
}
那没有检测,没有错误处理,也没有选项。您的 Web 应用程序可能至少应该包括其中的前两个。要检测对地理定位 API 的支持,您可以使用Modernizr:
function get_location() {
if (Modernizr.geolocation) {
navigator.geolocation.getCurrentPosition(show_map);
} else {
// no native support; maybe try Gears?
}
}
HTML5 地理定位资源: