Facebook iCalendar文件语言错误



我的app支持通过下载iCalendar文件同步事件。当尝试从Facebook下载iCalendar文件时,Facebook服务器在某些情况下返回错误语言的文件。

作为一个美国用户,文件似乎总是以我在Facebook网站上选择的语言(我的"主要Facebook语言")下载。这是正确的功能。

对于国际用户来说,情况似乎并不总是如此。许多用户选择"英语"作为他们的主要语言,但他们无论如何都会根据他们的位置获得文件的本地化语言版本:例如,印度的用户收到文件的印地语版本,以色列的用户收到文件的希伯来语版本。

是否有一种方法可以覆盖Facebook的行为来发送正确版本的文件?我可以修改HTTP请求的哪些参数来强制Facebook发送特定的语言?是否有URL参数或子域可以让他们以正确的语言发送文件?

当前下载iCalendar文件的代码:

        urlString = "https://www.facebook.com/ical/b.php?<user-auth-params>"
        URL url = new URL(urlString);
        HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();
        InputStream in = new BufferedInputStream(httpsURLConnection.getInputStream());
        String ical = "";
        byte[] buffer = new byte[1024];
        while (in.read(buffer, 0, 1024) > 0) {
            ical += new String(buffer).replaceAll("[^\P{C}\s]", "");
        }
        //Log.v(TAG, "stream: " + ical);
        httpsURLConnection.disconnect();

顺便说一下,对于对这个答案感兴趣的人,Facebook接受查询参数"&locale=xx-XX"作为查询字符串的一部分,以指定文件的语言和本地化设置。

指定一个特定的语言环境似乎解决了这个问题。

最新更新