Jan 2025【日本東北】溫泉三昧之旅④ 在大雪飄落的雪國,追尋秘湯之宿與極上美食(福島~探訪豬苗代湖、磐梯山、會津若松城&千年古湯 蘆之牧溫泉)

圖片
今早6點半起床,準備7點去使用昨天事先預約好的貸切露天風呂,這是「御宿萬葉亭」的名物,每一組住宿客人可以免費使用40分鐘。庭園裡的半露天的風呂,有兩個浴缸,一次只能容納最多三個人同時使用,左邊圓形的浴缸水溫很高、右邊橢圓形的浴缸水溫較低。雖然旅館裡面也有露天浴池,但是早晨享受一下這個庭園裡的露天風呂,也是一種特別的享受。 細密的雪花輕輕飄落,落在庭園的樹木和灌木叢上,覆蓋上一層柔軟的白色。原本翠綠的植物,此刻都披上了銀裝,枝條低垂,彷彿在向雪國的冬天致敬。 遠處的樹林,也都被白雪覆蓋,形成一片靜謐的雪白世界。偶爾,一陣微風吹過,樹枝輕輕搖晃,雪花便如柳絮般飄落,在空中舞動。我泡在熱氣氤氳的溫泉浴池中,早晨的寒意逐漸消散,而欣賞著這如詩如畫的雪景,身心都得到了徹底的放鬆。 聽聞中之澤溫泉的溫泉源自百年前的一場驚天動地的災難,根據我在旅館裡看到的白板資料,那場災難就發生在西元1888年,也就是明治21年的7月15日。某天的夏日清晨,本應是寧靜祥和的,卻被一連串不祥的預兆打破。從幾天前開始,大地就隱隱作祟,到了7點左右,地鳴聲愈發劇烈。早上7點45分,一陣劇烈的搖晃襲來,還沒等眾人回過神,便聽到一聲震耳欲聾的轟鳴,只見磐梯山的方向升起了一根巨大的柱狀物! 這根由岩石、土壤和水蒸氣組成的巨柱,扶搖直上,直衝雲霄,那景象,簡直就像是電影裡的末日場景!據說當時的景象如同「日食」發生一般,天地瞬間陷入一片黑暗。緊接著,夾雜著火山灰和被岩漿加熱的水蒸氣的「熱雨」傾盆而下,這場「熱雨」引發了大規模的土石流,不僅摧毀了沿途的村莊,更將河流截斷,形成了三個新的堰塞湖。而這三個湖泊,就是如今大名鼎鼎的檜原湖、小野川湖和秋元湖。 白板上那張手繪的「會津磐梯山爆發」示意圖,生動地還原了當年的場景。磐梯山被炸掉了一大塊,山腳下的村莊被夷為平地,原本流淌的河流被截斷,形成了三個巨大的湖泊。這幅景象,讓人不禁感嘆大自然的威力,也對當年受災的民眾感到深深的同情。 然而,這場災難卻也孕育出了新的生命——溫泉。白板上寫著:「中之澤溫泉,從江戶時代開始就是湯治場」。據說,這裡的源泉來自安達太良山的火山口,直線距離約7公里。沼之平地區在過去還是人們採集硫磺的地方,這裡出產的硫磺純度高達99%,品質極佳。 這裡的溫泉,屬於酸性泉,自古以來就以其強大的療效而聞名。泉水源自地下水與天水、加上活躍的火山活動交互影響的...

Using Google Contact API to import Gmail Contacts in Rails App

The Google Contacts API allows users to retrieve their email contacts from a gmail account without giving a gmail password to the requesting site. This system allows social networking site users to invite friends and find existing users they know without exposing their gmail accounts to malicious site owners or poor security practices.

The Contacts API allows developers to create, read, update, and delete contacts using the Google Data protocol, based on AtomPub," the announcement says. "It also allows for incremental sync by supporting the 'updated-min' and 'showdeleted' parameters.

邀請朋友是現今的社群網站必備的功能,許多社群網站都允許讓用戶透過GMail,Hotmail,Yahoo! Mail等郵件服務匯入自己的聯絡人列表來邀請朋友。早期在ASP.Net,JAVA,PHP這些程式語言的典型作法是透過一些Library來實作匯入聯絡人清單,而在Ruby on Rails則有Contacts Gem這類的套件可以使用;但缺點是用戶必須在第三方網站所提供的表單上鍵入自己的GMail帳號密碼,如此一來安全性問題就產生了,儘管提供此類功能的網站都會在旁邊註明不會儲存用戶的帳號密碼,但是你真的信的過這些網站嗎?所幸Google Contacts API的推出解決了這個問題,下面我們將實作透過Google的Authsub驗證方式在Rails網站上從Google Contact API匯入聯絡人列表的功能。


下圖是Twitter匯入GMail聯絡人功能的畫面:


首先需要到Google的註冊頁面註冊並驗證你的網域名稱,這裡的callback_url必須對映到應用程式裡的方法,然後我們還要上傳一個X.509 certificate檔案:

https://www.google.com/accounts/ManageDomains

Registration for Web-Based Applications
http://code.google.com/apis/accounts/docs/RegistrationForWebAppsAuto.html

在*NIX和OS X平台上可以使用OpenSSL來產生RSA Keys和certificate(將www.example.com改成你的域名):

這個指令會產生rsakey.pem和rsacert.pem兩個檔案,將rsacert.pem上傳至Google的Manage Domains頁面,並將rsakey.pem放置到#{RAILS_ROOT}/config目錄下。

AuthSub in the Google Data Protocol Client Libraries
http://code.google.com/intl/zh-TW/apis/gdata/docs/auth/authsub.html

Authentication for Web Applications
http://code.google.com/intl/zh-TW/apis/accounts/docs/AuthForWebApps.html

之後當使用者按下"從GMail匯入聯絡人"連結後,使用者會被導向Google帳戶登入頁面(如果尚未登入),然後同意授權應用程式存取他們的GMail聯絡人資料,之後Google會傳回一個AuthSub Token給我們的應用程式。


授權應用程式存取Google聯絡人資料


下面是實作的Ruby程式碼:

首先我們在Google的Manage Domains頁面將callback_url設為http://www.example.com/authsub,因此我們可以在/config/routes.rb裡面添加路徑映射:

map.connect 'authsub', :controller => 'gmail_contacts', :action => 'authsub'

接下來新增一個GmailContacts Controller 內容如下:

然後在Application Controller添加下面內容:

接著在config/initializers目錄下建立一個google.rb 內容如下:

最後編輯/app/views/gmail_contacts/import.html.erb 內容如下:


現在我們已經可以成功從GMail匯入使用者的聯絡人列表,而且使用者並不需要在我們的網站上輸入任何GMail帳號密碼,所有的驗證過程都是在Google網站上以SSL安全連線來完成。接下來只要將這個部份整合到你網站上的邀請朋友功能,就能夠讓使用者選擇要發送邀請給哪些GMail上的聯絡人了!

參考資料:

Google Contacts API
http://code.google.com/intl/zh-TW/apis/contacts/

Contacts Gem at Github
http://github.com/cardmagic/contacts

ricardoalmeida / contacts_rails at Github
http://github.com/ricardoalmeida/contacts_rails

Google Data on Rails
http://code.google.com/intl/zh-TW/apis/gdata/articles/gdata_on_rails.html

Using Google OAuth in Ruby on Rails Sites
http://www.manu-j.com/blog/add-google-oauth-ruby-on-rails-sites/214/

Import Gmail Contacts using Ruby on Rails
http://blog.adsdevshop.com/2008/04/18/import-gmail-contacts-using-ruby-on-rails/

A Little Help on Importing Gmail Contacts using Ruby on Rails
http://www.theirishpenguin.com/2008/06/25/a-little-help-on-importing-gmail-contacts-using-ruby-on-rails/

Import contacts list in rails
http://blog.brijeshshah.com/import-contacts-list-in-rails/

blackbook gem (Contact Importer gem for Ruby on Rails)
http://saravani.wordpress.com/2009/03/13/blackbook-gem-contact-importer/

Fetching Cotacts From Gmail, Yahoo And Hotmail
http://puneetitengineer.wordpress.com/2008/09/26/fetching-cotacts-from-gmail-yahoo-and-hotmail/


Here is a (incomplete) list of pages with documentation for different open apis:

Hotmail: http://dev.live.com/contacts/
Gmail: http://googledataapis.blogspot.com/2008/03/3-2-1-contact-api-has-landed.html
Yahoo: http://developer.yahoo.com/social/contacts/ , http://developer.yahoo.com/addressbook/

熱門文章

【秋季清邁遊 Part 5|Visit Mae Ya Waterfall and Wachirathan Waterfall】The 6 Day Itinerary To Explore Chiang Mai And Northern Thailand's Mountains

台中【馨苑小料理】西區店|巷弄裡的人氣台菜店|米其林必比登推薦美食|提供合菜、個人套餐

Jan 2025【日本東北】溫泉三昧之旅④ 在大雪飄落的雪國,追尋秘湯之宿與極上美食(福島~探訪豬苗代湖、磐梯山、會津若松城&千年古湯 蘆之牧溫泉)

Feb, 2024【台中西區】桃太郎日本料理|隱身巷弄裡的39年老字號無菜單料理|食材新鮮、自然美味

Jan 2025【苗栗泰安】泰安警光山莊泡湯&彰化CP值極高的日本料理|沐藏料理所X海龍王|彰化板前料理 ♨️🍁🥢🍲

Jan 2025【日本東北】溫泉三昧之旅① 在大雪飄落的雪國,追尋秘湯之宿與極上美食(秋田~探訪有日本溫泉界頂點之稱的秘湯乳頭溫泉鶴之湯)

2019.10.9~13【令和元年の紅葉の山旅へ PART①】秋の贅沢、黒部川の源流へ北アルプス深部を縦走5日間!Day0、Day1(前泊、折立~藥師岳山莊)

Mar 2025【新竹五峰】油羅山森呼吸:擁抱原始柳杉林秘境之美(羅山林道第一登山口往返)

Sep 3~4, 2021【烏來三大林道】未完成的「新北橫公路」~遠離塵世喧囂的西坑林道、桶後林道、內洞林道

May, 2024【新北瑞芳】四腳亭步道|漫步油桐花步道,踏訪時光痕跡:四腳亭砲台歷史尋幽之旅(順訪在地老店 橋頭排骨麵)

文章列表

Contact

名稱

以電子郵件傳送 *

訊息 *