Facebook 如何获得用户';现在的国家是什么,保护它不受操纵?

Facebook 如何获得用户';现在的国家是什么,保护它不受操纵?,facebook,facebook-graph-api,geolocation,location,geocoding,Facebook,Facebook Graph Api,Geolocation,Location,Geocoding,我正在iOS、Android和Web上开发Facebook应用程序。我想获得用户的当前国家/地区,并保护其免受操纵 此功能必须适用于移动应用程序和web应用程序。并且不能被用户操纵(它必须显示他们当前所在的真实国家,并且他们不能更改) 我该怎么做 我可以使用Facebook应用程序获取用户位置吗?它是真实的位置还是用户在其个人资料上写的位置?一般来说,使用一些技术可以获得准确的地理信息 GPS定位 这是在用户的设备上完成的,因此它可能是伪造的,不可信。例如,Android官方仿真器允许用户为测试

我正在iOS、Android和Web上开发Facebook应用程序。我想获得用户的当前国家/地区,并保护其免受操纵

此功能必须适用于移动应用程序和web应用程序。并且不能被用户操纵(它必须显示他们当前所在的真实国家,并且他们不能更改)

我该怎么做


我可以使用Facebook应用程序获取用户位置吗?它是真实的位置还是用户在其个人资料上写的位置?

一般来说,使用一些技术可以获得准确的地理信息

GPS定位 这是在用户的设备上完成的,因此它可能是伪造的,不可信。例如,Android官方仿真器允许用户为测试目的输入任意数据

GeoIP 假设用户可以通过IP网络连接到服务器,他将拥有一个IP地址。然后在您控制的服务器端,您可以查询一个现有的GeoIP数据库,从IP地址获得用户位置的估计值

当您是查找国家代码的人时,可以通过使用位于不同国家/地区的代理服务器来伪造国家/地区代码

设备语言/国家/地区 例如,通过使用电话API在Android上实现:

TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = manager.getNetworkCountryIso();
我不确定它是否易于修改,但这绝不是一种可移植的方法,尤其是对于web应用程序

在后一种情况下,可以使用
accept language
HTTP请求头,因为浏览器通常会公布用户最喜欢的语言。虽然不准确,但如果语言是某个国家独有的,它仍然可以给出用户所在国家的估计。 就像每个用户提供的信息一样,它仍然不能被信任

底线 很少有人能保证用户的地理信息是准确的,特别是因为受国家保护的多媒体内容的出现鼓励人们积极寻找规避此类保护的解决方案