ITも大抵筋肉でなんとかなる

気が向いたら技術的なことも書くかもしれないですが、技術的なこと=ITとは限りません。

Python3でGoogle Driveのファイルを操作する ~Google API設定編~

始めに

  • この記事は3記事ある続き物の最初となる。

3記事について

Python3とGoogle APIを使用してGoogle Driveのファイル操作ができるようになることを目標とする。本記事ではGoogle APIを使用し下記3点の取得を完了することをゴールとする。 アクセストークン発行、アップロードやファイル操作については続きの記事で記述する。

説明しないこと

事前準備

下記が必要なので事前に準備すること。

  • Googleのアカウントを取得済み
  • Python3の環境を構築済み

筆者が使用した環境

  • CentOS7

Google APIsでプロジェクトを作成する

  1. 次のURLにアクセスする。
  2. 「プロジェクトを選択」をクリックする。
  3. 「作成」をクリックする。
  4. 好きなプロジェクト名を入力し「作成」をクリックする。
  5. ダッシュボードに戻ってくるので「選択」をクリックする。
  6. するとプロジェクトを選択するダイアログが開くので、先ほど作ったプロジェクトを選択し「開く」をクリックする。
    これでプロジェクトが選択可能となる。

作成したプロジェクトにGoogle Drive APIの設定をする

このままでは使用できないため、使用するAPIの設定をする。

  1. 上の検索ボックスに「google drive api」と入力しEnterを押すと「Google Drive API」が出てくるので選択する。
  2. 「有効にする」をクリックする。
  3. 「認証情報を作成」をクリックする。
  4. 下記を設定し「必要な認証情報」をクリックする。
    • APIを呼び出す場所
      • ウェブブラウザ(JavaScript)
    • アクセスするデータの種類
      • ユーザーデータ
  5. 下記を設定し「OAuthクライアントIDを作成」をクリックする。
    • 名前
      • 好きな名前を入力
    • 制限事項
      • 承認済みのJavaScript生成元
        • http://localhost
      • 承認済みのリダイレクトURI
        • http://localhost/oauth2callback
  6. 下記を設定し「次へ」をクリックする。
    • ユーザーに表示するサービス名
      • 好きなサービス名
  7. 「ダウンロード」をクリックし、認証情報のJSONをダウンロードしておく。認証情報のJSONは次のステップで使用する。
  8. ダウンロードできたら「完了」をクリックする。
    これで認証情報が作成できた。

access token、refresh tokenの取得

認証の設定はできたので、次はプログラムからアクセスするためAccess tokenを発行する。 (参考リンク:Google API OAuth2.0のアクセストークン&リフレッシュトークン取得手順メモ

  • 1.先ほどダウンロードしたJSONclient_secret_{client_id}.json)を開く。
    • JSONは一行にまとめられてしまっているため、もし読みやすい形式にしたい場合は下記の手段を用いるとよい。
    • JSONは下記のようになっているはずなので確認する。
{
    "web": {
        "client_id": "{client_id}",
        "project_id": "{project_id}",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://accounts.google.com/o/oauth2/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_secret": "{client_secret}",
        "redirect_uris": ["http://localhost/oauth2callback"],
        "javascript_origins": ["http://localhost"]
    }
}
  • 2.下記のようにURLを作る。
    • {client_id}client_secret_{client_id}.jsonclient_idとなるので読み替えて作成すること。
https://accounts.google.com/o/oauth2/auth?client_id={client_id}&redirect_uri=http://localhost/oauth2callback&&scope=https://www.googleapis.com/auth/drive&response_type=code&approval_prompt=force&access_type=offline
  • 3.作ったURLをブラウザのURL欄に入力しEnterを押しアクセスする。
  • 4.アカウントの選択画面に遷移するので、プロジェクトを作成したアカウントをクリックする。
  • 5.「許可」をクリックする。
  • 6.「このサイトにアクセスできません」となるが成功。画面遷移後のURLをコピーする。コピーした内容は下記の通りとなっているはず。
    • http://localhost/oauth2callback?code={code}
    • この{code}は次で使用する。
  • 7.Access tokenの発行を行なう。curlコマンドを使用するため、インストールされていない場合はインストールを行なうこと。
    1. ターミナルを起動する。
    2. 次のコマンドを入力する。{client_id}{client_secret}は1. で取得したJSONの値を、{code}は6. で取得した値を入れる。
$ curl \
    -d "client_id={client_id}" \
    -d "client_secret={client_secret}" \
    -d "redirect_uri=http://localhost/oauth2callback" \
    -d "grant_type=authorization_code" \
    -d "code={code}" \
    "https://accounts.google.com/o/oauth2/token"
  • 8.curlを実行すると下記のような結果が返ってくる。プログラム側では{refresh_token}を利用する。
{
  "access_token" : "{access_token}",
  "expires_in" : 3600,
  "refresh_token" : "{refresh_token}",
  "token_type" : "Bearer"
}

これでアクセストークンを発行する準備が整った。次の記事ではアクセストークンをPythonで発行する方法について記載する。

参考記事