2017-01-24 4 views
1

J'utilise Google picker dans un client Web pour autoriser un utilisateur à autoriser mon application et sélectionner un fichier à télécharger. Je récupère les fichiers fileId et oauthToken pour le fichier sélectionné et je le passe à mon backend similaire à ce que j'ai trouvé ici (Google picker and backend file download).Client Picker avec serveur .Net File Download 403 Interdit

Le processus dorsal est .Net et j'utilise le code indiqué ci-dessous pour soumettre la requête pour le fichier. Toutefois, je reçois une erreur 403 Forbidden même si la même demande Get fonctionne correctement dans Postman lorsque j'envoie les mêmes informations Url, FileId et oAuthToken.

Des idées sur ce qui pourrait ne pas fonctionner avec la configuration de mon HttpWebRequest?

public void Download(string pOAuthToken, string pFileId, string pFileName) { 
    HttpWebRequest request; 
    HttpWebResponse response; 

    bool result = false; 
    string url = ""; 

    try { 
     url = "https://www.googleapis.com/drive/v3/files/" + pFileId + "?alt=media"; 
     request = WebRequest.Create(url); 
     request.Headers.Add("Authorization", ("Bearer " + pOAuthToken)); 

     response = request.GetResponse(); 

     // Insert code to download file here 

     result = true; 
    } 
    catch (Exception ex) { 
     LogError("Download exception.", ex); 
    } 
    finally { 
     response.Close(); 
    } 

    return result; 
} 
+0

403 signifie généralement la permission. Il devrait y avoir plus d'informations dans le corps de la réponse. – pinoyyid

+0

Avez-vous essayé d'utiliser [webContentLink] (https://developers.google.com/drive/v3/web/manage-downloads) pour télécharger le fichier? Je suis capable de télécharger des fichiers de mon disque en utilisant cela. – noogui

+0

Le corps de la réponse ne contenait aucune autre information. J'ai essayé d'augmenter l'autorisation de portée de auth/drive.readonly à auth/drive mais cela n'a eu aucun effet. Dans le document google.picker, je n'ai pas trouvé de propriété webContentLink. La propriété la plus proche était un fichier downloadUrl mais cette propriété n'était pas définie dans le document google.picker qui était renvoyé à la fonction de rappel. –

Répondre