【Copilotの答えの始め】

 

Flaskを使ってGoogle IDでログインするための例と、Google側の設定について説明します。

Flaskでの実装例

まず、Flaskアプリケーションを作成し、GoogleのOAuth 2.0を使用してログイン機能を実装します。

  1. 必要なライブラリのインストール

1
pip install Flask requests google-auth google-auth-oauthlib google-auth-httplib2
  1. ディレクトリ構成

1
2
3
4
5
6
7
google-login-app/
├── app.py                # メインのFlaskアプリケーション
├── client_secret.json     # Google OAuth 2.0のクライアントシークレットファイル
├── requirements.txt       # 必要なパッケージ一覧
├── templates/             # HTMLテンプレートを格納するディレクトリ   └── index.html         # ログインボタンを含むホームページ
└── static/                # JavaScriptやCSSファイルを格納するディレクトリ
  1. app.pyの作成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from google_auth_oauthlib.flow import Flow

app = Flask(__name__)
app.secret_key = os.urandom(24)

# Google OAuth 2.0の設定ファイル
flow = Flow.from_client_secrets_file(
    'client_secret.json',
    scopes=["openid", "https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email"],
    redirect_uri="http://localhost:5000/callback"
)

@app.route('/login')
def login():
    authorization_url, state = flow.authorization_url()
    session['state'] = state
    return redirect(authorization_url)

@app.route('/callback')
def callback():
    flow.fetch_token(authorization_response=request.url)
    credentials = flow.credentials
    request_session = google.auth.transport.requests.Request()
    id_info = google.oauth2.id_token.verify_oauth2_token(
        id_token=credentials.id_token,
        request=request_session,
        audience=flow.client_config['client_id']
    )
    return f"Hello, {id_info.get('name')}!"

if __name__ == '__main__':
    app.run(debug=True)

Google側の設定

  1. Google Cloud Consoleでプロジェクトを作成

    • Google Cloud Consoleにアクセスし、Googleアカウントでログインします。

    • 「プロジェクトを選択」ボタンをクリックし、「新しいプロジェクト」を作成します。

  2. OAuth同意画面の設定

    • 左側メニューの「APIとサービス」→「OAuth同意画面」を選択します。

    • ユーザータイプとして「外部」を選択し、アプリケーション名やサポートメールアドレスを入力します。

  3. 認証情報の作成

    • 左側メニューの「APIとサービス」→「認証情報」を選択し、「+ 認証情報を作成」ボタンをクリックします。

    • 「OAuth 2.0 クライアントID」を選択し、アプリケーションの種類として「ウェブアプリケーション」を選びます。

    • 承認済みのリダイレクトURIに、FlaskアプリのリダイレクトURL(例: http://localhost:5000/callback)を追加します。

    • クライアントIDとクライアントシークレットをメモし、client_secret.jsonファイルをプロジェクトディレクトリに保存します。

  4. 必要なAPIの有効化

    • 左側メニューの「APIとサービス」→「ライブラリ」をクリックし、「Google People API」を検索して有効にします。

これで、FlaskアプリケーションでGoogle IDを使ったログイン機能を実装するための準備が整いました。

 

【Copilotの答えの終わり】

 

os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"とは

 

【Copilotの答えの始め】

 

os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"は、OAuthlibライブラリがHTTPS以外のプロトコルを使用することを許可するための設定です。この設定は、開発環境やテスト環境でのみ使用することを強くお勧めします。本番環境では、セキュリティを確保するために必ずHTTPSを使用する必要があります。

詳細:

  • os.environ["OAUTHLIB_INSECURE_TRANSPORT"]:これは環境変数を設定して、OAuthlibライブラリがHTTPS以外のプロトコル(例えばHTTP)を許可するようにします。

  • "1":値として1を設定すると、環境変数が有効になります。

この設定を行うと、OAuthlibはセキュリティを犠牲にしてでもHTTP通信を許可するようになります。以下にコード例を示します:

1
2
3
4
import os

# 開発環境やテスト環境でのみ使用する
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"

この設定は、たとえばローカル環境でHTTPSを設定するのが難しい場合や、テストを簡単に行いたい場合に便利です。しかし、セキュアな通信を確保するため、本番環境では使用しないようにしてください。

 

【Copilotの答えの終わり】

 

 

 

 

秋振舞姉より届く野菜畑