【问题标题】:how to get user's current country and protect it from manipulation?如何获取用户当前的国家并保护它免受操纵?
【发布时间】:2014-11-07 15:31:05
【问题描述】:

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

此功能必须在移动应用和网络应用中都具有实用性。并且不能被用户操纵(它必须显示他们当前所在的真实国家,并且他们无法更改)。

我该怎么做?

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

【问题讨论】:

    标签: facebook facebook-graph-api geolocation location geocoding


    【解决方案1】:

    一般来说,获取准确的地理信息可以使用几种技术。

    GPS定位

    这是在用户的设备上完成的,因此它可能会被伪造且不可信。例如,Android官方模拟器允许用户输入任意数据进行测试。

    地理IP

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

    虽然您是查找国家/地区代码的人,但它可能会被伪造,例如通过使用位于不同国家/地区的代理服务器。

    设备语言/国家

    例如在 Android 上通过使用电话 API 是可行的:

    TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    String countryCode = manager.getNetworkCountryIso();
    

    我不确定它是否容易修改,但这绝不是一种可移植的方法,尤其是对于 Web 应用程序。

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

    底线

    很少能保证用户的地理信息是准确的,特别是因为受国家/地区保护的多媒体内容的出现代表了人们积极寻找解决此类保护措施的动力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 2022-11-15
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多