3個步驟用 Flask-Login 串接 Google 登入

by | 3 月 14, 2023 | Python

這次我想要和大家分享我學習如何使用 Flask-Login 這個套件,並串接 Google 登入的過程。Flask-Login 是一個用於 Flask 框架的擴充套件,可以協助我們輕易實現用戶登錄的功能。而 Google 登入則是一種由 Google 提供的 OAuth 2.0 驗證機制,可以讓使用者在網站上使用 Google 帳號進行登入。

為了實現 Google 登入的功能,我們需要進行以下三個步驟:

步驟一:建立 Google Cloud Platform 專案

首先,我們需要建立一個 Google Cloud Platform 專案,並申請一個 Google 登入的 API Key。建立專案的步驟如下:

  1. 前往 Google Cloud Console,建立一個新專案。
  2. 選擇「API 和服務」,並啟用 Google+ API。
  3. 選擇「憑證」,並建立一個 OAuth 用戶端 ID。
  4. 選擇「網路應用程式」,並輸入應用程式名稱和授權 JavaScript 來源。
  5. 設定授權範圍和授權回調 URI。
    在建立 Google Cloud Platform 專案時,需要設定「授權範圍」和「授權回調 URI」。授權範圍是指 Google 登入所需要的權限,例如使用者的基本資料或是 Gmail 的存取權限等等。授權回調 URI 則是 Google 登入完成後,要導向的網址。在設定授權回調 URI 時,請記得將網址設定為 Flask 程式的網址,例如 http://localhost:5000/google-login
  6. 複製用戶端 ID 和用戶端密鑰,以供 Flask 程式使用。

 

步驟二:安裝 Flask-Login 套件

接著,我們需要在我們的 Flask 程式中安裝 Flask-Login 套件。可以使用以下的指令進行安裝:

pip install flask-login

 

步驟三:實現 Google 登入功能

最後,我們需要在我們的 Flask 程式中實現 Google 登入的功能。具體的步驟可以參考以下的程式碼:

# 設定 Google 登入的回調網址
google_blueprint = make_google_blueprint(
    client_id='YOUR_CLIENT_ID',
    client_secret='YOUR_CLIENT_SECRET',
    scope=['profile', 'email'],
    redirect_url='/google-login'
)

# 設定 login_manager
login_manager = LoginManager()
login_manager.login_view = 'login'
login_manager.init_app(app)

@login_manager.user_loader
def load_user(user_id):
    return User.get(user_id)

# 設定 login 路由
@app.route('/login')
def login():
    return render_template('login.html')

# 設定 google-login 路由
@app.route('/google-login')
def google_login():
    if not current_user.is_authenticated:
        return redirect(url_for('google.login'))
    else:
        return redirect(url_for('index'))

# 設定 logout 路由
@app.route('/logout')
@login_required
def logout():
    logout_user()
    return redirect(url_for('index'))

結語

透過以上的步驟,我們已經成功地實現了 Google login 的功能。如果大家想要進一步學習 Flask-Login 和 Google login 的相關知識,可以參考以下的參考資料:

希望這篇文章對大家有所幫助,如果有任何問題或建議,歡迎在下方留言!

0 Comments

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

RSS
Follow by Email