0

PHPでGoogleドライブにファイルをアップロードしようとしています。

認証コードには、次のスコープを使用しています。

https://www.googleapis.com/auth/drive  
https://docs.google.com/feeds/  
https://docs.googleusercontent.com/  
https://spreadsheets.google.com/feeds/  

私はすでに有効な を受け取っており、それを使用していつでもrefresh_token新しい を取得できます。access_token

問題は、これを使用してアップロードを実行しようとしているときですaccess_token(期限切れではなく、まだ使用されていません)。

stdClass Object
(
    [error] => stdClass Object
        (
            [errors] => Array
                (
                    [0] => stdClass Object
                        (
                            [domain] => global
                            [reason] => required
                            [message] => Login Required
                            [locationType] => header
                            [location] => Authorization
                        )

                )

            [code] => 401
            [message] => Login Required
        )
)

次のヘッダーでcurlを使用しています:

Array
(
    [0] => Content-Type: text/plain
    [1] => Content-Length: 503242
    [2] => Authorization: Bearer ya29.AHES6ZRWXZkZDDi6AFV9PK2QonHp93nIfJbYqipXFT1uCsg
    [3] => GData-Version: 3.0
)

また、次の URL:

https://www.googleapis.com/upload/drive/v2/files?uploadType=media

CURL コマンドは次のようになります。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADERS, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($file));
$return = curl_exec($ch);
curl_close($ch);

どんな助けでも心から感謝します...前もって感謝します...

4

3 に答える 3

2

ドライブにファイルをアップロードするために必要な OAuth スコープはhttps://www.googleapis.com/auth/drive.file.

考えられるすべてのスコープについては、ドキュメントを確認してください: https://developers.google.com/drive/scopes

ところで、Drive API は GData ベースではないためGData-Version、リクエストにヘッダーを追加する必要はありません。

エラーを簡単に見つけられるように、OAuth 2.0 Playground から送信されたリクエストと比較することもお勧めします。

https://developers.google.com/oauthplayground/

于 2012-08-28T17:19:04.927 に答える
0

CURLOPT_HTTPHEADERS ではなく、 CURLOPT_HTTPHEADER

于 2015-10-17T18:53:41.970 に答える
0

次のスコープを使用してみてください: https://www.googleapis.com/auth/drive.file

また、ドキュメントに記載されている手順を完全に実行したことを確認してください

https://developers.google.com/drive/about-auth

curl を使用したくない場合は、Googlephpclientlibarary の insert メソッドを使用してファイルを挿入できます。

それ以外の場合は、Claudio が述べたようにリクエストを OauthPlayground と比較します

于 2012-08-30T11:28:37.980 に答える