2009/6/10

顛覆網路 35 天 (2a): Firefox 3.5 與地理資訊揭露

歡迎回到顛覆網路 35 天,今天 (其實是昨天晚上… 有時差) 的第一篇「Firefox 3.5 與地理位置資訊揭露」是我比較關心的議題、我會花較多力氣編譯全文 — 不過一如往常,請不要期待精準的翻譯,這也不是我的本意。

網路風行,也因此常有帶著電腦到處跑的機會。有時就是想找一下附近的餐廳,所以你打開網路要找… 且慢,我「現在」在哪裡?如果熟悉這附近也就算了,要是出門在外有時還真不確定自己現在正在何處。就算你知道自己所在位置好了,該怎麼找呢?打開 Google 地圖或 Y!生活家、選擇所在區域… 放大點、縮小點,輸入文字開始搜尋…

如果網路服務能自動判別我們的所在地,這一切會方便很多 — 再且慢,這可能嗎?當然可能,如果你曾出國使用自己的電腦,在設定不改的情況下造訪 google.com,很可能會被引導至該國語言的 Google 網頁。這是依據你的 IP 來判斷國別的方式,諸如此類的定位方法當然也還有 GPS 等更精準的東西。

取用地理資訊

目前 W3C 正在發展地理位置規格草案,而 Firefox 3.5 實作了這個 API、讓網際應用程式可以藉此 (在你的允許下) 得知你的地理位置、提供更好的服務。以 JavaScript 取得地理資訊很簡單:

function showPosition(position) {
    alert(position.coords.latitude + “ “ +
    position.coords.longitude);
}
 
navigator.geolocation.getCurrentPosition(showPosition);

呼叫後 Firefox 會詢問使用者是否願意提供個人地理位置資訊。

錯誤處理

取用地理資訊時有兩類錯誤要留心:

首先,使用者可能拒絕提供資訊、或甚至完全不回應。你可以在呼叫時便先行設定錯誤掌控函式,並設定等待回應的時限。

navigator.geolocation.getCurrentPosition(successCallback,
                                         errorCallback,
                                         {timeout:30000});

本例裡,使用者若拒絕請求,那麼就會呼叫 errorCallback 函式;若使用者超過 30 秒不回應,也會呼叫 errorCallback。

第二,使用者的地理位置可能隨時更改 (像是邊搭高鐵邊用 3G),這時可以使用 watchPosition 來監看。

navigator.geolocation.watchPosition(showPosition);

在此例,每回地理資訊一有變動、就會呼叫 showPosition 函式。

當然你也可以定期呼叫 getCurrentPosition,不過基於節能減碳、我們建議你盡可能採用 watchPosition — 此例裡只有地理位置變動了以後才會呼叫 showPosition,瀏覽器回應速度會快些、而這對效能表現相對較差的行動裝置非常重要。

帽裡乾坤

方才提過、技術上來說要得知地理位置有幾種常見方法,像是 WiFi、IP、GPS 等。Firefox 3.5 目前使用 WiFi 跟 IP 位置來推測地理位置。

有些公司會開著車四處探索 WiFi 存取點,依據特定位置的 WiFi 存取點數量、訊號強弱紀錄等,就可以推測你的所在位置。而如果使用者不使用 WiFi,那就依據 IP 位置來反查、推測你的位置在哪裡。用 IP 推測的方式精確度自然不如 WiFi,不過在台灣是不是只能用 IP 推測啊…?有哪位大德知道哪間公司提供 WiFi 與地理位置對應的服務嗎?

瞎扯一下:話說上回我跟 othree 在大葉大學時以 3G 分別測試這個功能,othree (遠傳電信) 精準地測出他人在大葉,而我手上的 3G (中華電信) 卻說我人在台中,這差得真遠…

隱私問題?

Firefox 一直都很注重使用者個人資訊的隱私問題,在這邊你也可以有絕對自主權、決定是否揭露個人的地理位置。技術面上 Firefox 該做的做了,另外在道德面上 W3C 還起草了一份給網際服務供應商的行為準則建議:

  • 只在必要時要求取用地理資訊。
  • 取得的地理資訊僅用在使用者當時揭露時所進行的工作 (就是說,不要用在使用者沒有同意的地方)。
  • 工作完成後應棄用原先取得的地理資訊,除非使用者表達願意讓你儲存資訊的意願。
  • 必須善加保護使用者的地理資訊,不可為他人在無授權狀態下使用。
  • 若儲存、紀錄了地理資訊,必須提供使用者更新或刪除的選項。
  • 取得的地理資訊未經使用者同意不可轉發 (至別的主機、別的服務… etc.),而轉發時為了資訊安全請用 HTTPS。
  • 服務供應商應詳細說明為何取用地理資訊、用於何處、資訊保留時效、如何維護資安、資訊如何與其他服務共享、使用者如何存取刪除資訊等等。一旦有與上述各準則不同的處理方式,皆應於這類說明文件中詳細列出。

當然這是「建議」… 不過如同隱私政策一樣、我們也希望這變成道德上的業界標準。

特別注意

如方才所說,這個規格目前還是草案,日後可能還有些許變動。不過就目前所知、唯一會影響的就是 enableHighAccuracy:這可能會改名成像是 useLowPower 那類的名稱。Firefox 3.5 目前提供 enableHighAccuracy,但尚未實作其內容。往後若規格有所變動,可能會同時提供新舊兩版方便應用程式相容。

沒有留言:

張貼留言

歡迎留下您的意見