我正在开发iOS,Android和Web上的Facebook应用程序。我想获得用户当前的国家/地区并保护其免受操纵?
此功能必须适用于移动应用和网络应用。并且不能被用户操纵(它必须显示他们当前所在的真实国家,他们无法改变它。)
我该怎么做?
我可以使用Facebook App获取用户位置吗?它是真实的位置,还是用户在个人资料中写的位置?
答案 0 :(得分:0)
一般来说,使用一些技术可以获得准确的地理信息。
这是在用户的设备上完成的,因此它可能是伪造的,不可信任。例如,Android官方模拟器允许用户输入任意数据用于测试目的。
假设用户可以通过IP网络连接到服务器,他将拥有一个IP地址。然后在您控制的服务器端,您可以查询其中一个现有的GeoIP数据库,以便从IP地址估算用户位置。
虽然您是查找国家/地区代码的人,但可以通过使用位于其他国家/地区的代理服务器进行伪造。
例如,可以通过使用电话API在Android上实现:
TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = manager.getNetworkCountryIso();
我不确定它是否易于修改,但这绝不是一种可移植的方法,尤其是对于Web应用程序。
在后一种情况下,可以使用accept-language
HTTP请求标头,因为浏览器通常会宣传用户最喜欢的语言。虽然不准确,但在语言对于一个国家而言是唯一的情况下,它仍然可以估计用户的国家。
正如每个用户提供的信息一样,它仍然无法被信任。
很少有人保证用户的地理信息准确无误,特别是因为受国家保护的多媒体内容的出现激励人们积极寻找解决方案来规避此类保护措施。