0

を書くことができない私は、私はGoogleドライブAPPにテストフォルダを記述しようとしていますが、私はこのエラーを取得していますGoogleのドキュメントから一緒にこれをつなぎいる:GoogleドライブAPIフォルダ

An error occurred: { 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "insufficientPermissions", 
    "message": "Insufficient Permission" 
    } 
    ], 
    "code": 403, 
    "message": "Insufficient Permission" 
} 
} 

は、オンライン検索することがいるようですこれはスコープによるものですか?これは、私は以下のように多くを追加した理由は次のとおりです。

require_once 'vendor/autoload.php'; 

date_default_timezone_set('Europe/London'); 

define('APPLICATION_NAME', 'Pauls Google Drive'); 
define('CREDENTIALS_PATH', '~/.credentials/drive-php-quickstart.json'); 
define('CLIENT_SECRET_PATH', __DIR__ . '/client_secret_paul.json'); 
// If modifying these scopes, delete your previously saved credentials 
// at ~/.credentials/drive-php-quickstart.json 
define('SCOPES', implode(' ', array(
     Google_Service_Drive::DRIVE, 
     Google_Service_Drive::DRIVE_FILE, 
     Google_Service_Drive::DRIVE_APPDATA, 
     Google_Service_Drive::DRIVE_READONLY, 
     Google_Service_Drive::DRIVE_METADATA, 
     Google_Service_Drive::DRIVE_METADATA_READONLY 
    ) 
)); 

if (php_sapi_name() != 'cli') { 
    throw new Exception('This application must be run on the command line.'); 
} 

/** 
* Returns an authorized API client. 
* @return Google_Client the authorized client object 
*/ 
function getClient() { 
    $client = new Google_Client(); 
    $client->setApplicationName(APPLICATION_NAME); 
    $client->setScopes(SCOPES); 
    $client->setAuthConfig(CLIENT_SECRET_PATH); 
    $client->setAccessType('offline'); 

    // Load previously authorized credentials from a file. 
    $credentialsPath = expandHomeDirectory(CREDENTIALS_PATH); 
    if (file_exists($credentialsPath)) { 
     $accessToken = json_decode(file_get_contents($credentialsPath), true); 
    } else { 
     // Request authorization from the user. 
     $authUrl = $client->createAuthUrl(); 
     printf("Open the following link in your browser:\n%s\n", $authUrl); 
     print 'Enter verification code: '; 
     $authCode = trim(fgets(STDIN)); 

     // Exchange authorization code for an access token. 
     $accessToken = $client->fetchAccessTokenWithAuthCode($authCode); 

     // Store the credentials to disk. 
     if(!file_exists(dirname($credentialsPath))) { 
      mkdir(dirname($credentialsPath), 0700, true); 
     } 
     file_put_contents($credentialsPath, json_encode($accessToken)); 
     printf("Credentials saved to %s\n", $credentialsPath); 
    } 
    $client->setAccessToken($accessToken); 

    // Refresh the token if it's expired. 
    if ($client->isAccessTokenExpired()) { 
     $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken()); 
     file_put_contents($credentialsPath, json_encode($client->getAccessToken())); 
    } 
    return $client; 
} 

/** 
* Expands the home directory alias '~' to the full path. 
* @param string $path the path to expand. 
* @return string the expanded path. 
*/ 
function expandHomeDirectory($path) { 
    $homeDirectory = getenv('HOME'); 
    if (empty($homeDirectory)) { 
     $homeDirectory = getenv('HOMEDRIVE') . getenv('HOMEPATH'); 
    } 
    return str_replace('~', realpath($homeDirectory), $path); 
} 

function getFolderExistsCreate($service, $folderName, $folderDesc) { 
    // List all user files (and folders) at Drive root 
    $files = $service->files->listFiles(); 
    $found = false; 
    // Go through each one to see if there is already a folder with the specified name 
    foreach ($files['items'] as $item) { 
     if ($item['title'] == $folderName) { 
      $found = true; 
      return $item['id']; 
      break; 
     } 
    } 
    // If not, create one 
    if ($found == false) { 
     $folder = new Google_Service_Drive_DriveFile(); 
     //Setup the folder to create 
     $folder->setName($folderName); 
     if(!empty($folderDesc)) 
      $folder->setDescription($folderDesc); 
     $folder->setMimeType('application/vnd.google-apps.folder'); 
     //Create the Folder 
     try { 
      $createdFile = $service->files->create($folder, array(
       'mimeType' => 'application/vnd.google-apps.folder', 
      )); 
      // Return the created folder's id 
      return $createdFile->id; 
     } catch (Exception $e) { 
      print "An error occurred: " . $e->getMessage(); 
     } 
    } 
} 


// Get the API client and construct the service object. 
$client = getClient(); 
$service = new Google_Service_Drive($client); 

getFolderExistsCreate($service, 'Test', 'This is a test folder'); 

getFolderExistsCreateが実際にコードだけダウン半分の上にあるフォルダを作成する方法です。助けてください!! :)私はエラーなしでドライブからファイルのリストを返すことができたので、私は信任状と接続がOKであることをうれしく思っています。以下の確認について

+0

。 – noogui

答えて

0

どのように?

  1. は再び、ドライブのAPIが有効になっていることを確認してください。
  2. スコープを追加したとします。ですので、~/.credentials/drive-php-quickstart.jsonのファイルを一度削除してください。その後、スクリプトを実行してdrive-php-quickstart.jsonを再度作成します。これにより、追加されたスコープがアクセストークンとリフレッシュトークンに反映されます。

これらはあなたのために有用でなかったら、ごめんなさい。あなたは、スコープを変更する前の資格情報を削除した場合、その答えで述べたように

関連する問題