2025年6月26日木曜日

Blogger API v3 を使うために OAuth2.0 認証を Python スクリプトで行う方法

Blogger API v3 を使うために OAuth2.0 認証を Python スクリプトで行う方法

概要

Blogger API v3 を使って記事を投稿するためには OAuth2.0 認証を使わなければなりません
OAuth の場合一度ブラウザで認証しトークンを取得する必要がありますがそうしないと記事の投稿はできないようです

今回は前準備として Python スクリプトで Google API を使うための OAuth2.0 認証を行う方法を紹介します

環境

  • macOS 15.5
  • Python 3.12.11
  • google-api-python-client 2.174.0

インストール

  • pipenv install google-api-python-client google_auth_oauthlib

client_secrets.json の取得

API とサービス -> 認証情報 -> 認証情報の作成 -> OAuth クライアント ID

  • アプリケーションの種類 -> ウェブアプリケーション
  • 承認済みのリダイレクト URI http://localhost:8080/

で作成し client_secret_1234567890-xxx.apps.googleusercontent.com.json というファイルをダウンロードします
以下のコードでは client_secrets.json に名前を変更しています

Python スクリプト

認証し成功したらトークンをファイルに保存します
トークンファイルが既にローカルにある場合はそれを使うためブラウザで認証するのは初回のみになります

  • vim app.py
import os

from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build

# スコープ(Blogger のフルアクセス)
SCOPES = ['https://www.googleapis.com/auth/blogger']


if os.path.exists("token.json"):
    creds = Credentials.from_authorized_user_file("token.json", SCOPES)
else:
    flow = InstalledAppFlow.from_client_secrets_file("client_secrets.json", SCOPES)
    creds = flow.run_local_server(port=8080, access_type='offline')
    with open("token.json", "w") as token:
        token.write(creds.to_json())

# 以降のコードで自動リフレッシュ対応済み
service = build("blogger", "v3", credentials=creds)

動作確認

  • piepnv run python app.py

実行するとブラウザが起動し Google アカウントでログインすることになります
アプリが Blogger にアクセスすることを許可する画面になるので許可します

GCP の画面でブランディングなど設定するとアプリ名などを設定できます

認証後に Python スクリプト側に token.json があれば認証成功です
再度実行してみるとブラウザは起動せずにクライアントオブジェクトが設定できることを確認できるはずです

最後に

Blogger API v3 で記事を投稿するための準備段階として OAuth2.0 認証を Python スクリプトで行う方法を紹介しました
OAuth2.0 はセキュアなのですがブラウザ認証しなければならないので面倒です

参考サイト

0 件のコメント:

コメントを投稿