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

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

Integrating Facebook Connect with your Rails Applications

Facebook Connect is a set of APIs from Facebook that enable Facebook members to log onto third-party websites, applications, mobile devices and gaming systems with their Facebook identity. While logged in, users can connect with friends via these mediums and post information and updates to their Facebook profile. Developers can use these services to help their users connect and share with their Facebook friends on and off of Facebook and increase engagement for their website or application.

Originally unveiled during Facebook’s developer conference, F8, in July 2008, Facebook Connect became generally available in December 2008. According to an article from The New York Times, "Some say the services are representative of surprising new thinking in Silicon Valley. Instead of trying to hoard information about their users, the Internet companies (including Facebook, Google, MySpace and Twitter) all share at least some of that data so people do not have to enter the same identifying information again and again on different sites."

Windows Live服務整合Facebook Connect功能的畫面:


Facebook Connect是Facebook在2008年推出的功能,推出後馬上被許多大中小型網站所使用。透過Facebook Connect,用戶將可以在整個網路上使用Facebook的身份驗證資料,包括使用Facebook帳戶登入/註冊第三方網站,以及在其他網站分享他們的頭像照片、名稱、照片、朋友、群組、活動以及其他的資訊。這個是以前所做的東西,但Facebook已經在今年推出了新版的Open Graph API,若打算實作這個部份的話,建議還是使用新版的API會比較可靠!

Facebook Connect
http://developers.facebook.com/connect.php

Facebook Platform Wiki
http://en.wikipedia.org/wiki/Facebook_Platform


下面是實作Facebook Connect in Rails Application的過程:

1.首先我們需要給Rails project安裝Facebooker Plugin:
$ script/plugin install http://github.com/mmangino/facebooker/tree/master
安裝新版的facebooker插件必須將Rails升級到2.2版本以上.

2.你需要在Facebook註冊一個Developer測試帳戶,或是從下面網址讓你現有的Facebook帳戶成為Facebook Platform Developer Test Accounts(開發應用程式用的測試帳戶):
http://www.facebook.com/developers/become_test_account.php

登入Facebook Developer頁面註冊你的應用程式:
http://www.facebook.com/developers

步驟1. Add the Developer Application.
步驟2. Create a New Facebook Application.
步驟3. Update the Facebook Application settings to point to your publicly available host.

Example settings(假設域名是:http://www.example.com):

Authentication Tab:
  Enter Post-Authorize Callback URL, e.g. http://www.example.com/fb/post_authorize
  Canvas Tab:
Enter Canvas Page URL, e.g. run_example_com
Enter Canvas Callback URL, e.g. http://www.example.com/fb/connect
  Connect Tab:
Enter Connect URL, http://www.example.com/fb/connect
  Advanced Tab:
Set Application Type as Web.

將facebooker plugin裡的facebooker.yml文件放在/config目錄下,並編輯其內容:

Set api_key, secret_key, canvas_page_name (copy the last part of the Canvas Page URL from the Canvas tab), callback_url (that's Canvas Callback URL from FB settings), and set set_asset_host_to_callback_url to false.

下面是一個facebooker.yml範例內容:

然後執行xd_receiver generator來產生cross domain scripting bridge,用來讓你的應用程式可以和Facebook溝通:

$ script/generate xd_receiver

預設之下它會在/public目錄下建立xd_receiver.html和xd_receiver_ssl.html兩個檔案,我們將它們放置到/public/fb/connect目錄下,因為這個路徑會對映到我們稍候建立的FbController的connect方法中,而我們也會在/config/route.rb中定義這個路徑。

接下來將facebooker plugin目錄下的facebooker.js複製到/public/javascript目錄下,並新增一個facebook_require.js檔案,內容如下:

編輯/public/javascript/application.js新增下面內容:

編輯app/vews/layout/application.html.erb新增內容:

我們還要在適當的樣板中新增一個藉由Facebook Session登入的"登出"連結,用來區別和一般帳戶登入的不同,點擊'從Facebook登出'將會刪除現階段的Facebook Session並將使用者導向/logout來登出網站

編輯/config/environment.rb,新增環境變數:


典型的方式是使用網站資料庫裡現有的Users資料表中的DB Record來和Facebook帳戶整合, 我們將在users table中新增fb_uid(facebook uid)和email_hash(to contain a hashed version of the user's email address)欄位。

A typical case for integration is to add Facebook Connect as an alternative way of authenticating for existing users. To achieve this, add fields fb_uid (facebook uid) and email_hash (to contain a hashed version of the user's email address) to the users table.

接下來新增一個Run Publisher模型:
$ script/generate model RunPublisher

Publishing is handled by the RunPublisher class in app/models/run_publisher.rb. Every feed template needs to be registered with Facebook before it can be used and this is done via migrations.

編輯/app/models/run_publisher.rb的內容:

然後建立新的Database遷移檔:
$ script/generate migration CreateFacebookTemplates

編輯/db/migrate/xxxxx_create_facebook_templates.rb遷移檔內容:

然後還需要建立一個遷移檔,在users資料表添加一些新的欄位:
$script/generate migration AddFacebookConnectToUsers

編輯/db/migrate/xxxxx_add_facebook_connect_to_users.rb內容:

最後執行rake db:migrate建立資料表!

接下來編輯/config/route.rb新增下面的路徑映射:

在/bin目錄下新增fb_preconnect.rb內容如下:

接下來在/bin目錄下新增register_templates.rb內容如下:

現在我們可以執行 script bin/fb_preconnect.rb 來預先連結資料庫中的所有使用者,這樣將能夠讓Facebook知道我們資料庫中的使用者可能會在將來使用Facebook Connect連結他們的帳戶。Facebook會預先連結使用者的 email_hash 來配對帳號。若不執行preconnect動作,Facebook將不會去包含 email hash 的值,將來使用者過Facebook Connect連結時,將需要輸入他們的Email地址!

稍候我們在/app/models/user.rb中建立的after_create callback可以讓將來任何新建立的使用者帳號都會自動和Facebook去做預先連結。

藉由Users資料表中的 fb_uid 欄位,使用者將可以透過正常的登入機制(帳號/密碼) 或是Facebook Connect 按鈕來登入,而我們會在/app/controllers/fb_connect_controller.rb建立Facebook Connect主要的驗證機制。


現在新增一個FBConnect Controller並編輯其內容如下:
$ script/generate controller FbConnect

下面是我們的FbConnect Controller處理Facebook Session Login的簡單流程圖:


在Application Controller新增方法,用來處理Facebook Session以及Session Expired:

然後需要修改用來處理登入驗證機制的/lib/login_system.rb的內容:

接下來要修改/app/controllers/account_controller.rb中用來處理登出的logout方法:

登出Rails網站並同時登出Facebook


接下來修改Users Controller中的New和Create方法(這是用來建立使用者的):

在new方法添加這些過濾內容是為了防止使用者直接在網址攔輸入fb_user=1的參數來欺騙應用程式,正確的作法是必須透過Application_Controller中的facebook_user方法來驗證使用者是真正透過Facebook Session來註冊帳號。我們同樣也可以在create方法中添加這條過濾!

然後編輯User Model內容,修改password_required?方法:

上面的before_update是為了在使用者變更Email地址之後,建立新的Facebook Session和變更email_hash的值。其中的email_changed?是在Rails 2.1版本之後開始內建的方法,可以直接調用

接下來修改/app/views/users/new.html.erb視圖的內容:

然後修改/app/views/users/edit.html.erb視圖,編輯密碼修改的欄位部份:

並在users的edit和show視圖中新增下面的判斷內容:

然後在/app/views/shared目錄下建立_fbconnect_button.html.erb和_fbpublish.html.erb兩個樣板檔:

其中_fbconnect_button.html.erb內容如下:

另外_fbpublish.html.erb內容如下:

然後將貼到需要添加Facebook登入按鈕的視圖頁面即可(如首頁,Signup頁面和Login頁面)


接下來我們可以編輯相關的視圖,讓透過Facebook Session登入的使用者可以在頁面上直接顯示他們的Facebook頭像圖片和Facebook用戶名稱(點擊圖片可以連結至他們的Facebook頁面),而不再是我們網站上的頭像圖片。

PS.從這邊開始的部份都是我自己的Rails Project的內容,看不懂的請不要亂複製到你的Project,我這裡只是提供一個概念作為參考!

首先修改users_helper.rb中的user_link方法:

然後修改users/_status_update.html.erb的視圖內容,這是使用者首頁的狀態發佈器。

接著修改users/_current_status.html.erb視圖:

最後將下面內容加到/app/controllers/users/status_update_controller.rb的Create方法中:



另外我們還可以修改/app/views/wall_comments底下的_form.html.erb和_comment.html.erb視圖,讓透過Facebook Session登入的使用者可以在Profile頁面的塗鴉牆看到自己的Facebook頭像和名字:

修改/app/views/wall_comments/_form.html.erb視圖:

修改/app/views/wall_comments/_comment.html.erb視圖:

OK搞定了!而其他需要顯示Facebook頭像的頁面也可以用同樣的邏輯來作修改,非常簡單!


接下來我們要將Rails網站裡面的一些功能和Facebook做進一步的整合,首先我們要將使用者首頁的狀態更新和Facebook塗鴉牆整合,讓使用者在網站上更新狀態時,訊息可以同時發佈到使用者的Facebook塗鴉牆上。

首先在users/status_update_controller.rb中新增一個fbpublish方法:

然後編輯/public/javascript/application.js新增下面的內容,其中的Ajax Request路徑會指向Users::StatusUpdatesController中的fbpublish方法,它會執行一些Ajax動作:

接著我們在users/status_update_controller.rb的Create方法中添加下面的內容:

然後在建立/app/views/shared目錄下建立_fbpublish.html.erb樣板:

並修改users/_status_update.html.erb樣板內容:

另外,視圖中jQuery的部份也需要修改:


使用者尚未授權Facebook帳戶可以透過第三方網站張貼內容至Facebook塗鴉牆


授權Facebook帳戶畫面,授權之後我們的應用程式會去呼叫Users::StatusUpdatesController中的fbpublish方法執行Ajax動作。


已授權Facebook帳戶可以從第三方網站張貼內容至Facebook塗鴉牆


訊息已透過我們的應用程式發佈到使用者的Facebook塗鴉牆上


最後我們可以在使用者的首頁和個人檔案頁面顯示該使用者Facebook帳號上的朋友,首先在首頁和個人檔案頁面載入部份樣板:

最後建立/app/views/shared/_fbfriends.html.erb樣板:




下面是一些Facebook Connect的相關資源以及Tutorial:

Facebook Connect on Facebook Developers
http://developers.facebook.com/connect.php

Using Ruby on Rails with Facebook Platform
http://wiki.developers.facebook.com/index.php/Using_Ruby_on_Rails_with_Facebook_Platform

Facebooker Tutorial
http://apps.facebook.com/facebooker_tutorial/

Tutorial for restful_authentication on Rails with Facebook Connect in 15 minutes
http://www.madebymany.co.uk/tutorial-for-restful_authentication-on-rails-with-facebook-connect-in-15-minutes-00523

Tutorial on developing a Facebook platform application with Ruby On Rails
http://www.liverail.net/articles/2007/6/29/tutorial-on-developing-a-facebook-platform-application-with-ruby-on-rails

Integrating Facebook Connect with Rails Applications
http://nws.applicake.com/blog/index.php/2009/07/02/integrating-facebook-connect-with-rails-applications/

Using Facebooker to make a Rails site with Facebook Connect (Part 1)
http://blog.moove-it.com/using-facebooker-to-make-a-rails-site-with-facebook-connect-part-1/

Using Facebooker to make a Rails site with Facebook Connect (Part 2)
http://blog.moove-it.com/using-facebooker-to-make-a-rails-site-with-facebook-connect-part-2/

Using Facebooker to make a Rails site with Facebook Connect (Part 3)
http://blog.moove-it.com/using-facebooker-to-make-a-rails-site-with-facebook-connect-part-3/

Rails app on Facebook Connect
http://www.rubyflow.com/items/1322

Star in a Porno with Facebook Connect and Rails
http://spongetech.wordpress.com/2008/11/17/star-in-a-porno-with-facebook-connect-and-rails/

How to Facebook-Connect a Rails app
http://passthehash.com/hash/2009/05/how-to-facebook-connect-your-rails-app.html

Getting Started with Facebooker
http://www.pathf.com/blogs/2008/07/getting-started-with-facebooker/

熱門文章

【秋季清邁遊 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

名稱

以電子郵件傳送 *

訊息 *