ホームページ >バックエンド開発 >Golang >API 経由で Google ドライブへのファイルのアップロードが失敗する

API 経由で Google ドライブへのファイルのアップロードが失敗する

王林
王林転載
2024-02-09 13:30:08463ブラウズ

通过 API 将文件上传到 Google Drive 失败

php エディタの Xigua は、API を使用して Google ドライブにファイルをアップロードするときにエラーが発生する場合があると伝えています。この状況は、ネットワークの問題、権限の不足など、さまざまな理由によって発生する可能性があります。しかし、心配しないでください。この問題を解決するためにできることがいくつかあります。次に、誰もがこの問題を心配する必要がないように、API を介して Google ドライブにファイルを正常にアップロードする方法を詳しく紹介します。

質問内容

Googleドライブにファイルをアップロードしようとしていますが、失敗します。これはよくある問題であることがわかったので、MIME タイプを正しく指定したつもりだったのですが、それでも機能しません。

変換システムについて: ファイルをアップロードできる Jin-Gonic (v1.9.1) 用の API があります。 API から取得したファイルを正常に保存できるため、ファイルはフロントエンド/ポストマンから API に正常に渡されます。

表示されるエラーは次のとおりです:

リーリー

次の関数があります:

リーリー

ここではハードコードされた MIME タイプを追加しましたが、変数 fileMimeType は実際には正しいです。 Test1 の内容を含む Test.txt ファイルをアップロードしました (フロントエンド/ポストマン経由で送信した場合も正常に作成されました)。ファイルの MIME タイプを動的に指定するか、MIME タイプをまったく指定しないことも試みましたが、常に同じ結果が得られます。

これには次のパッケージを使用します:

  • Go バージョン: go1.21.1 darwin/arm64
  • go list -m golang.org/x/oauth2: v0.13.0
  • go list -m google.golang.org/api: v0.147.0
    • google.golang.org/api/drive/v3
    • google.golang.org/api/googleapi
    • google.golang.org/api/option
###編集:###

Google の公式サンプルもコピーしましたが、それでも動作しません。

回避策

エラーは認証に関連しているようです。このエラーから無効な認証を推測するのは少し難しいですが、機能させるにはリフレッシュ トークンのリフレッシュ アルゴリズムを少し変更する必要がありました。

これは私の作業用コードです。 UploadFile()

関数を呼び出す前に、まず oauthTokenConfig.ExpiresIn をチェックしてトークンがまだ有効かどうかを確認し、有効であればファイルをアップロードします。そうでない場合は、最初にトークンを更新します。 。 ファイルのアップロード

リーリー

リフレッシュトークン

リーリー

以上がAPI 経由で Google ドライブへのファイルのアップロードが失敗するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。