web-dev-qa-db-ja.com

HTTP Google Sheets API v4 OAuth 2.0?

私のアイデアは、Googleシートを作成し、それを公開してから、仕事用コンピューターlinux/bashからアクセスして、毎日値を読み書きすることです。

誰でも検索/編集できる公開のGoogleドキュメントシートがあります。これはシートIDです:1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0

本でそれをやって https://developers.google.com/sheets/api/samples/reading

curl 'https://sheets.googleapis.com/v4/spreadsheets/1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0/values/Sheet1!A1:A3'

戻り値:

{
  "error": {
  "code": 403,
  "message": "The request is missing a valid API key.",
  "status": "PERMISSION_DENIED"
  }
}

ここで特に多くのことを読みました Google Sheet API v4 複雑な解決策を見つけました。短い1時間でパブリックシートにアクセスする場合です。

https://developers.google.com/oauthplayground/ を参照して、v4 apiの認証を取得し、「認証コード」を取得してから、「トークンの更新」、最後に「アクセストークン」を取得します。

この「アクセストークン」を使用すると、次のように公開シートにアクセスできます
curl 'https://sheets.googleapis.com/v4/spreadsheets/1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0/values/Sheet1!A1:A3' -H "Authorization: Bearer ya29.GlvaBLjrTdsSuSllr3u2nAiC-BOsjvIOE1x5afU3xiafB-FTOdLWDtfabuIMGF1rId5BsZxiTXxrx7VDEtxww4Q1uvW9zRndkfm3I2LZnT1HK2nTWzX_6oXu-NAG"

戻り値:

{
  "range": "Sheet1!A1:A3",
  "majorDimension": "ROWS",
  "values": [
        [
      "a1"
    ],
    [
      "a2"
    ],
    [
      "a3"
    ]
  ]
}

完璧です。理論的には、「アクセストークン」は1時間後に期限切れになり、「リフレッシュトークン」は期限切れになりません。そのため、トークンを保存し、「アクセストークン」でシートを読み取ろうとします。失敗した場合は、「リフレッシュトークン」を使用して新しい「アクセストークン」を取得して続行します。

しかし、私は数十個の「更新トークン」が引き換え/期限切れになり、「認証コード」が期限切れになり、数時間後には何も機能しません。どうして?

この種の認証なしでカールしてGoogleシートフォームbashにアクセスするにはどうすればよいですか?特に私のシートは公開されており、ブラウザを使用して誰でも編集できるためです。

他の永続的な承認でこれを行う別の方法はありますか?なぜ電子メールを使用してパスしないのですか?

「APIキー」は記載されていますが、説明されていません。誰かがこの方法を段階的に説明できますか?

11
user5471256

すべてのGoogle APIでは、公開データにアクセスする場合でも、[Google開発者コンソール 1 でプロジェクトを作成し、自分とアプリケーションを識別する必要があります。シートを公開に設定したので、 google developer console に移動して、公開APIキーを作成するだけで、GoogleシートAPIをアクティブにすることを忘れないでください。次に、リクエストのパラメーターとしてkey = [YourKey]を追加します。

開発コンソールの更新:

プロジェクトを作成してキーを取得します。

Google開発者コンソール ->プロジェクトを作成する-> 資格情報 ドロップダウン-> APIキー

enter image description here

有効にします:

Google開発者コンソール -> ライブラリ シート検索で有効にします。

更新

{"エラー":{"コード":403、 "メッセージ": "リクエストに有効なAPIキーがありません。"、 "ステータス": "許可_拒否"}}

Googleで自分を特定していないことを意味します。 2015年のGoogleスタートでは、Google APIを使用することはできません。GoogleAPIを使用することはできません。それには、[Googleデベロッパーコンソールでプロジェクトを作成します 1 。 APIキーを作成し、すべてのリクエストでそのAPIキーを使用します。これは、パブリックデータでのみ機能します。

https://sheets.googleapis.com/v4/spreadsheets/1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0/values/Sheet1!A1:A3?key=YOurKEY

注:プライベートユーザーデータでは、OAuthを使用し、access_token = your tokenを使用するか、ヘッダーを設定する必要があります。

許可:Bearer ya29.GlvaBLjrTdsSuSllr3u2nAiC-BOsjvIOE1x5afU3xiafB-FTOdLWDtfabuIMGF1rId5BsZxiTXxrx7VDEtxww4Q1uvW9zRndkfm3I2LZnT1HK2nXWXGNA.

アクセストークンはAPIキーとは異なります。

15
DaImTo