2017 May 29 ~ June 4【泰國 素叻他尼 Surat Thani Thailand 🌊⛵️✈️👭】Ratchaprapa Dam, Koh Samui, Khao Sok National Park

圖片
My first trip to Surat Thani Thailand!

Ratchaprapa Dam is located in South Thailand and I highly recommend it as a destination if you are nature-loving traveller and considering traveling in Thailand.
We had wonderful two night stay at Keree Warin Resort which was a raft house accommodation on the lake. This lake is big, as I think it took around 30 minutes of travel by long tail boat to reach our resort.
We spent our time enjoying the breath-takingly beautiful views, swimming and canoeing around the vicinity of the raft house.It's really a great place to relax and have some quiet time in beautiful surrounding.


















Using Yahoo! Browser-Based Authentication with your Rails Application


Yahoo has released a new product called BBAuth in Sep, 2006, It’s a mechanism for non-Yahoo applications to access Yahoo’s authentication mechanism and user data in a secure manner.

BBAuth fixes that problem when it comes to accessing data locked up at Yahoo. Using the tools Yahoo provides, non-Yahoo applications can request a user to sign in to Yahoo and give permission for Yahoo user data to be sent to the non-Yahoo application.

這是二年前做的東西,我們將透過 Yahoo Browser-Based Authentication(Yahoo! BB Auth)這個介面來實作使用 Yahoo! 帳號登入 Rails 應用程式的功能。實作之前需要先安裝 xml-simple 這個 Ruby Gem 套件,以及 Act-as-authenticated 這個 Rails Plugin。

首先建立遷移檔,在 User 模型添加一個一個 yahoo_userhash 欄位:

$ ruby script/generate migration AddYahooBBAuthToUsers

實作之前,先來了解一下Yahoo! BB Auth 的基本運作原理:

* 當使用者點擊網頁上的 http://你的網址/yahooLogin 連結之後會被重導至 Yahoo!的認證頁面
* 認證成功之後,Yahoo!會傳回一些 information,並導向 http://你的網址/yahooAuth

return 回來的其中一個值即是使用者在 Yahoo!與你的 Rails 應用程式聯合產生的 unique id。

若它在我們站上沒有資訊,就準備一個註冊頁面讓使用者填。如果有就用 find_by_yahoo_userhash 找出他是誰,確定身份後再改 seseeion 讓他能夠被辨識出來。



接下來請到下面網址註冊你的 Rails Application 並取得 Yahoo BB Auth 的 AppID:
http://developer.yahoo.com/auth/appreg.html

這裡輸入的 Web Application URL 和 BBAuth Success URL 網址必須和你的route.rb裡面的控制器設定符合,這裡我在 Web Application URL 輸入http://你的網址/yahooLogin,以及在 BBAuth Success URL 輸入 http://你的網址/yahooAuth,申請並認證之後會得到一個 AppID 和 Secret Key。再來就是在 #{RAILS_ROOT}/lib 目錄下建立一個 yahoo_bb_auth.rb 檔案,然後把這兩個 key 套用在檔案中:

接下來編輯 #{RAILS_ROOT}/config/routes.rb 檔案,設定 yahooLogin 和 yahooAuth 對應的 Controller 和方法:

然後編輯UsersController的Create方法,添加下面的內容:

然後在UsersController中新增 yahooLogin 和 yahooAuth 這兩個方法:

接下來編輯 app/views/users/new.html.erb 裡面的密碼輸入區塊,如果使用者透過Yahoo!帳號認證成功並返回註冊頁面,則不需要填寫密碼欄位:

再來編輯 app/views/users/edit.html.erb 這個帳號設定的視圖,這裡設定當使用者要修改密碼時,只有當使用者的 hashed_password 欄位為空(沒有密碼)以及 yahoo_userauth 欄位有值(已認證過 Yahoo!帳號)的情況下,才不需要填寫當前密碼的欄位(current_password),因為使用者目前並沒有設定密碼。

同樣的我們必須修改UsersController的update方法,來增加一些判斷邏輯:

OK!完成了,現在當使用者按下"從Yahoo帳號登入"的連結後,將會被導向Yahoo!的認證頁面,認證成功之後再將使用者帶回我們的網站,如果在資料庫中找到對映的yahoo_userhash資料,則將使用者登入,否則就將使用者導向註冊頁面。

Yahoo 帳號認證頁面
應用程式授權頁面

現在啟動你的Mongrel Cluster進行測試吧!enjoy~

熱門文章

[轉載] 洛克菲勒寫給兒子的38封信(全文)

September, 2012 白姑大山二天一夜~其實沒那麼累,只是路途遙遠

【清邁之旅 Part 1|Exploring Doi Suthep-Pui National Park】The 6 Day Itinerary To Explore Chiang Mai And Northern Thailand's Mountains

2013.5.25~26【新阿溪縱走】眠月線鐵道線探勘。順登松山、萬歲山、小笠原山、對高岳

2018, Sep 21【嘉義。阿里山】特富野古道健行。鐵道、迷霧、森林(Tefuye Historical Trail)

FbGraph + OmniAuth + Facebook Graph API on Rails application

2018 May 5~6【宜蘭】南方澳漁港~豆腐岬~朝陽國家步道~南澳觀音海岸~礁溪福哥石窯雞

文章列表

聯絡我

名稱

以電子郵件傳送 *

訊息 *