現在透過第3方認証來進行登入的行為愈來愈平常,簡單來說,就不用在該網站進行帳號註冊,即可使用該網站的服務。
在drupal 的世界裡絕大部分都使用模組來完成想要的功能,不用自己在額外開發,這次要用Google OAuth 來進行網站登入
必要的模組如下
Drupal Modules:
https://www.drupal.org/project/libraries (為了可以調用 google api php client 的功能)
https://www.drupal.org/project/gauth (主要可以使用google API的功能)
drupal 的使用語言是PHP,所以需要有API Client Library for PHP
介紹與使用 https://github.com/google/google-api-php-client
我們可以針對版本直接下載
https://github.com/google/google-api-php-client/releases/tag/1.1.6
對了!這裡的drupal 版本是7,目前drupal 釋出完整的載點只有drupal 7,而Google OAuth 為 2.0,gauth 模組 也是for 2.0
首先需要把 libraries 與 gauth 安裝到drupal 上,這部份我就不截圖了
安裝好兩個模組後,先進行libraries的設定
- 啟用libraries 模組
- 使用FTP或是SSH進行連線
- 將google api php client (檔名:1.1.6.tar.gz 或是 google-api-php-client-1.1.6.tar.gz) 的lib放置到 sites/all/libraries/ 底下
- 於該目錄解壓縮,目錄名稱為:google-api-php-client-1.1.6
- 因為要被gauth 模組調用,需要將目錄名稱改為 google-api-php-client
- 完成會是 sites/all/libraries/google-api-php-client/
完成libraries的設定後,接下來進行gauth的啟用,在gauth模組裏面有3個項目
- Google Auth
- Google Auth User Support
- Google Login Support
我們主要啟用的是 Google Auth 跟 Google Login Support 這兩個項目,Google Auth是主要項目,個項目啟用後才能使用Google Login Support
啟用後如下圖
設定Google Login Support,設定路徑為:yourdomain/admin/config/services/gauth_login
設定畫面:
我們在設定畫面上看到3個欄位資訊
- Client Id
- Client Secret
- Api Key
點選"使用 Google API"
建立好專案後,就會回到一開始的畫面,再次點擊"使用 Google API",進入頁面後在左側選單有個
點擊"憑證",如果沒有申請過的會出現要你申請的訊息框
點擊"建立憑證",會有3個項目,我們需要的是"API金鑰"與"OAuth用戶端ID",這兩個項目都要申請
我們先申請API金鑰,我們需要的是"「瀏覽器」金鑰",有項目有兩個欄位要輸入,輸入完之後就可以點擊"建立"了
註:
名稱: 是為了說明這個項目
接受這些 HTTP 參照網址 (網站) 發出的要求: 是選填,但最好是輸入你要使用的網站,避免不可逾期的問題發生
完成之後就可以在頁面看到你的API金鑰
接下來就是申請OAuth用戶端ID,如果沒有設定同意畫面,畫面會提示要先申請喔!
設定好"同意畫面"就可以進行OAuth用戶端ID設定
- 應用程式類型就選擇:網路應用程式
- 名稱:打上你想要的文字
- 已授權的重新導向 URI:這個項目在drupal的gauth的模組是通用路徑,要打上完整的路徑才能回傳驗證結果(路徑為:http://yourdomain/gauth/response_handler
註:那個gauth通用路徑是在drupal 路徑(admin/config/services/gauth_account/add) 的Redirect Url就可以看到了
完成後就點擊"建立"
這樣3個必要資訊就完成申請了
用戶端ID
用戶端密碼
API金鑰
現在畫面回到druapl的設定頁上面,網址路徑 http://yourdomain/admin/config/services/gauth_login
將剛剛設定好的3個資訊key在對應的欄位上,並且儲存設定,這樣就是大功告成了!
只要使用者在登入頁面就可以看到google登入按鈕
後記:
1.如果在drupal lib 的 google-api-php-client 設定不正確會出現"Can't authenticate with google as library is missing check Status report or Readme for requirements"的錯誤訊息
2. 如果在申請用戶端ID的 已授權的重新導向 URI這個欄位沒有打上網站正確的URL會跳出404警告頁面