有没有办法使用Google的API检索用户当前的邮政编码而不明确要求他们获得许可?我了解Google现在使用OAuth 2.0,这是一种身份验证协议,用户必须允许特定服务的权限。但是,我想找一个用户的位置,而不必问他们!
这可能吗?我对翻译IP地址不感兴趣,因为它们通常会返回错误的结果。同样,HTML5的地理位置功能也不起作用,因为它也需要用户权限。
答案 0 :(得分:2)
您必须使用Google(或Facebook ...或[在此处插入社交网络])oAuth用户才能访问有关该用户存储的任何信息(如家庭或工作“邮政编码”)第三方网站。但经过身份验证后,您将无法获得用户的当前邮政编码或位置。您想要他们当前的位置或他们的家庭住址或工作地址 - 您可能想澄清一下。无论如何,如果你想要用户的当前位置,我建议使用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地理定位的资源:
答案 1 :(得分:2)
我之前必须在类似的情况下做类似的事情。我得到的答案可能不是最漂亮的东西,但它确实有效,你可以得到一个邮政编码。
有一些类似的服务,但我发现MaxMind很擅长给我一个相当准确的lat,lon(至少对于城市/邮政编码读数)。这摆脱了你必须自己在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'; }
从这里你需要做一些地理编码(通过google或选择另一个)。从地理编码中获取您的响应,您可以循环搜索结果并提取邮政编码。如果你需要更多的输入,我可以挖出更多的脚本。
可能不是最优雅的方法,但我也被限制为无法使用地理位置,并且只能在仅限javascript的环境中使用。这对我有用。欢呼声。