概要
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 件のコメント:
コメントを投稿