Jan 2025【日本東北】溫泉三昧之旅⑤ 在大雪飄落的雪國,追尋秘湯之宿與極上美食(福島~被時光遺忘下的江戶原風景,日本三大茅葺聚落大內宿)

圖片
清晨的陽光穿過窗櫺,灑落在榻榻米上,為房間增添了一抹溫暖的光輝。窗外,白雪皚皚的山脈在晴朗的天空下閃閃發光,預示著美好的一天。我起身走到窗邊,深深吸了一口清新的冬日空氣,心中充滿了對即將到來的一天以及仙峽閣旅館美味早餐的期待。 旅館的餐廳瀰漫著舒適的氛圍。我坐在窗邊的座位上,渴望一邊欣賞迷人的雪景,一邊享用我的早餐。一個擺盤精美的早餐托盤送到了面前,上面擺滿了各種誘人的菜餚。 我的目光首先被一碗晶瑩剔透的白米飯吸引,它的香氣瀰漫在空氣中。旁邊是一份色彩繽紛的沙拉,新鮮的蔬菜搭配玉米粒,令人食慾大增。烤鮭魚散發著陣陣香味,魚皮烤得酥脆可口。溫泉蛋浸泡在清淡的高湯中,看起來既美味又暖胃。 其他幾道小菜也讓這份早餐更加豐富:燉菠菜、裙帶菜炒蒟蒻、山藥泥佐醬油,以及醃梅子和醃黃瓜。最後,一小杯香甜的芒果優格為這頓早餐畫上了完美的句點。 這份早餐不僅美味,而且營養均衡,為我在這個冬季仙境中探索一天提供了滿滿的能量。我細細品味著每一道菜餚,感受著旅館的用心和款待,心中充滿了感激之情,感謝這美好的一天有如此美好的開始。 飯後早晨,我踏出旅館的暖簾,迎接我的是一片銀白色的世界。蘆之牧溫泉街靜靜地沉睡在會津深山的懷抱中,厚厚的積雪覆蓋著屋頂、街道和樹木,彷彿時間也凍結在這一刻。 呼出的氣息在冰冷的空氣中凝結成白霧,我沿著溫泉街漫步,腳步聲在寂靜的早晨顯得格外清晰。偶爾,可以聽見屋簷上融雪滴落的聲音,或是遠處傳來的幾聲鳥鳴,更增添了這份寧靜的氛圍。 阿賀川靜靜地流淌在山谷間,河面上覆蓋著薄薄的冰層,在陽光的照射下閃閃發光。河岸邊的樹木披上了雪白的冬衣,枝椏交錯,形成一道道優美的弧線。溫泉旅館的屋頂冒著裊裊炊煙,為這寒冷的冬日增添了一絲溫暖。 漫步在空無一人的溫泉街上,我彷彿置身於一個與世隔絕的世外桃源。這份寂靜,這份純淨,洗滌了我的心靈,讓我感受到久違的平靜與祥和。 凛冬將群山染成了素雅的銀白,積雪在山坡上鋪陳開來,厚薄錯落,像是誰不經意間揮灑的筆墨,濃淡相宜。裸露的枝枒,在寒風中輕輕搖曳,仿佛在低聲訴說著冬日的故事。遠處的山巒,在霧氣的籠罩下,若隱若現,宛如仙境一般,讓人心生嚮往。 蘆之牧溫泉的冬日,沒有喧囂,沒有繁華,只有那份獨特的靜謐與安詳,像一首悠揚的樂曲,在山谷間輕輕回蕩,令人陶醉其中,忘卻了塵世的煩惱。 這山,這雪,這寧靜的溫泉小鎮,這氤氳的霧氣,交織成一幅絕美的冬日畫卷,...

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/

熱門文章

July 2024【台北士林】陽明山彼端的原始秘境|颱風後的鹿角坑生態保護區|循著疊石指引造訪楓林瀑布

Jan 2025【日本東北】溫泉三昧之旅② 在大雪飄落的雪國,追尋秘湯之宿與極上美食(仙台~品嚐極上米澤牛&奧羽的百年藥湯-鎌先溫泉)

Jan 2025【苗栗三義】富貴牡丹(三義館)人文藝術餐廳|預約制|在美術館裡吃無菜單料理

Jan 2025【日本東北】溫泉三昧之旅⑤ 在大雪飄落的雪國,追尋秘湯之宿與極上美食(福島~被時光遺忘下的江戶原風景,日本三大茅葺聚落大內宿)

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

Feb 2023【台中和平】裡冷林道Off Road單車野營~順登谷關七雄之首八仙山!單車+野營+登山,三個願望一次滿足

May 2023【雲林古坑】 負離子濃度達都市40倍/漫步木馬古道/順訪雲嶺之丘/山合苑喝咖啡/秋田犬

日本の登山の歷史

Sep, 2021【苗栗南庄】蓬萊林道Off Road小試|雨後很爛很濕滑|二傳低底盤車勿輕易嘗試

Mar 2025【桃園楊梅】福人登山步道輕鬆行:探索綠意盎然的自然步道

文章列表

Contact

名稱

以電子郵件傳送 *

訊息 *