online - No puedo ver los archivos y las carpetas creados a través de la API en mi unidad de Google con php
google drive?trackid=sp-006 (3)
La respuesta de Mayrop es parcialmente correcta.
Los archivos que se crean pertenecen al correo electrónico de la cuenta API (algo así como [email protected].
Debes dar permiso al propietario de esa cuenta como
$newPermission = new Google_Service_Drive_Permission();
$value="email id";
$type="user";
$role="writer";
$newPermission->setValue($value);
$newPermission->setType($type);
$newPermission->setRole($role);
try {
$res= $service->permissions->insert($fileId, $newPermission);
print_r($res);
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
Verá esa carpeta en Compartido conmigo. También puede agregar su unidad manualmente.
También puede desactivar el envío de notificaciones por correo electrónico usando
$service->permissions->insert($fileId, $newPermission,array(''sendNotificationEmails''=>false));
Espero que esto funcione para usted.
Estoy intentando crear una carpeta usando la API de Google api. Puedo obtener una identificación de archivo al final. pero no puedo acceder a mi carpeta en Google Drive. parece un problema de permiso?
$scopes = array(
''https://www.googleapis.com/auth/drive'',
''https://www.googleapis.com/auth/drive.appdata'',''https://www.googleapis.com/auth/drive.apps.readonly'',
''https://www.googleapis.com/auth/drive.metadata'',''https://www.googleapis.com/auth/drive.file'',
''https://www.googleapis.com/auth/drive.readonly'',''https://www.googleapis.com/auth/drive.photos.readonly''
);
$creds = new Google_Auth_AssertionCredentials(
$serviceAccountName,
$scopes,
file_get_contents($keyFile)
);
$client = new Google_Client();
$client->setApplicationName($appName);
$client->setClientId($clientId);
$client->setAssertionCredentials($creds);
$service = new Google_Service_Drive($client);
$fileMetadata = new Google_Service_Drive_DriveFile(array(
''name'' => ''Invoices'',
''permissions'' => array(''type''=>''anyone'',''role''=>''reader'',''allowFileDiscovery''=>1),
''mimeType'' => ''application/vnd.google-apps.folder''));
$file = $service->files->create($fileMetadata, array());
printf("File ID: %s/n", $file->id);
Sí, parece un problema de permisos. Intenta eliminar
''permissions'' => array(''type''=>''anyone'',''role''=>''reader'',''allowFileDiscovery''=>1),
de
$fileMetadata = new Google_Service_Drive_DriveFile(array( ''name'' => ''Invoices'', ''permissions'' => array(''type''=>''anyone'',''role''=>''reader'',''allowFileDiscovery''=>1), ''mimeType'' => ''application/vnd.google-apps.folder''));
Los archivos que se están creando pertenecen al correo electrónico de la cuenta API (algo así como [email protected]
. Si se dirige a la URL del disco: https://docs.google.com/document/d/{ID}
, obtendrá una página "Permiso denegado, solicitud de acceso".
El correo electrónico de la cuenta de servicio no está relacionado con su correo electrónico de usuario.
Para crear archivos con su usuario, debe crear una autorización de token de OAauth.
Cree las credenciales de OAuth siguiendo los pasos "Paso 1: encienda la API de Drive" en esta página
Modifique su secuencia de comandos, siguiendo el ejemplo en esta página , puede tener:
use Google_Client;
use Google_Service_Drive;
use Google_Service_Drive_DriveFile;
...
$file = ''root/to/your/credentials.json'';
$client = new Google_Client();
$client->setScopes([
''https://www.googleapis.com/auth/drive'',
''https://www.googleapis.com/auth/drive.appdata'',
''https://www.googleapis.com/auth/drive.apps.readonly'',
''https://www.googleapis.com/auth/drive.metadata'',
''https://www.googleapis.com/auth/drive.file'',
''https://www.googleapis.com/auth/drive.readonly'',
''https://www.googleapis.com/auth/drive.photos.readonly''
]);
$client->setAuthConfig($file);
$authUrl = $client->createAuthUrl();
printf("Open the following link in your browser:/n%s/n", $authUrl);
// You will need to open this url
print ''Enter verification code: '';
$authCode = trim(fgets(STDIN));
$accessToken = $client->authenticate($authCode);
file_put_contents($credentialsPath, $accessToken);
printf("Credentials saved to %s/n", $credentialsPath);
$client->setAccessToken(json_decode($accessToken, true));
$service = new Google_Service_Drive($client);
$metadata = new Google_Service_Drive_DriveFile([
''name'' => ''testing drive'',
''mimeType'' => "application/vnd.google-apps.document"
]);
$file = $service->files->create($metadata, []);
print_r($file);
El archivo debe estar en su directorio de inicio de Drive.
Por cierto, te sugiero que pruebes la nueva versión de google / apiclient: 2.0.2 (que todavía está en Beta, pero funciona bien).