2017-08-07 4 views
0

J'ai un problème avec la propriété downloadUrl qui est renvoyée après avoir fait une demande autorisée avec un jeton d'accès. Si j'essaie d'utiliser downloadUrl dans le navigateur, cela donnera une erreur HTTP 403. J'ai vérifié et mon jeton d'accès est valide et je peux faire des demandes de métadonnées de fichier de cette façon, et c'est ainsi que je peux obtenir le downloadUrl en premier lieu. Voici mon code en ce moment:L'API Google Drive v2 downloadUrl n'est pas authentifiée correctement

<?php 
require_once('vendor/autoload.php'); 
include_once "examples/templates/base.php"; 

$client = new Google_Client(); 
$credentials_file = __DIR__.'/credentials.json'; 
putenv('GOOGLE_APPLICATION_CREDENTIALS='.$credentials_file); 
if ($credentials_file = checkServiceAccountCredentialsFile()) { 
    // set the location manually 
    $client->setAuthConfig($credentials_file); 
} elseif (getenv('GOOGLE_APPLICATION_CREDENTIALS')) { 
    // use the application default credentials 
    $client->useApplicationDefaultCredentials(); 
} else { 
    echo missingServiceAccountDetailsWarning(); 
    exit; 
} 

$client->setApplicationName('test-debug'); 
$client->setScopes(array('https://www.googleapis.com/auth/drive.readonly')); 
$service = new Google_Service_Drive($client); 

$id = "some-id-here"; 

$pre = "https://www.googleapis.com/drive/v2/files/"; 

$tokenArray = $client->fetchAccessTokenWithAssertion(); 
$accessToken = $tokenArray["access_token"]; 

$content = json_decode(file_get_contents($pre.$id."?access_token=".$accessToken)); 
$downloadUrl = $content->{'downloadUrl'}; 
echo $downloadUrl; 

?> 

Avec ce code, je peux faire une demande avec succès à l'API de Google et de récupérer le paramètre downloadURL. Le seul problème est, il n'est pas valide pour une raison quelconque. Est-ce que quelqu'un pourrait savoir exactement pourquoi cela se passe? Cela a-t-il quelque chose à voir avec la façon dont je fais la demande avec un jeton d'accès? S'il vous plaît chime dedans si vous pensez que vous avez une réponse à ce problème.

P.S. Je voudrais aussi mentionner que, en utilisant php CURL une erreur 401 est retourné au lieu d'une erreur 403

Répondre

0

Ainsi, lors de la vérification Drive v2 PHP Quickstart,

lecteur v2 n'est plus pris en charge par la bibliothèque client PHP . Voir le Drive v3 PHP Quickstart à la place.

Pour démarrer dans Drive v3, vous aurez besoin du ff.

  • PHP 5,4 ou plus avec l'interface de ligne de commande (CLI) et l'extension JSON installé.
  • L'outil de gestion des dépendances Composer.
  • Accès à Internet et un navigateur Web.
  • Un compte Google avec Google Drive activé.
+0

Ahh, oui c'est logique pourquoi cela ne fonctionne pas. Mais le quickstart PHP Drive v3 ne m'aidera pas dans ma situation. Je cours un serveur Web sans accès à une console. Ce que j'essaye de faire est d'utiliser un compte de service et d'obtenir aucun consentement de l'utilisateur du tout. Et puis en utilisant le compte de service pour télécharger un fichier sur le PC de l'utilisateur. Je suis capable de le faire avec le lecteur api v3 sauf que le fichier téléchargé n'est pas le bon nom de fichier. C'est pourquoi je voulais utiliser le fichier downloadUrl du lecteur v2. Puis-je ajouter que cette URL accomplit exactement ce que j'essaie de faire: https://links-safety.com/download.php?id={FILE-ID} – chadismydad