2017-08-28 5 views
1

Je construis une API qui utilise Google Drive avec un compte de service.lien de téléchargement pour objet Google Drive avec compte de service

objets Google Drive viennent avec une @web_view_link propriété qui ressemble à:

"https://drive.google.com/file/d/0B9eyEerjltIgZ2dyUTB1eGNjYUk/view?usp=drivesdk"

Quand j'accéder à ce @web_view_link dans le navigateur en utilisant un compte personnel, le lien est fonctionnel et l'objet peut être téléchargé De là.

Lorsque je colle le @web_view_link dans le navigateur en utilisant un Google Drive compte de service , se plaint sur les autorisations et je ne peux pas y accéder, même quand j'accède avec un propriétaire de compte.

Est-il possible d'accéder à un lien de téléchargement à partir de google drive en utilisant un compte de service?

J'utilise google-drive-ruby bijou et c'est le code pour récupérer ce @web_view_link url:

def create_url 
    folder_name = Discourse.current_hostname 
    found = google_files.select { |f| f.id == id } 
    file_title = found.first.title 
    file_url = session.collection_by_title(folder_name).file_by_title(file_title).human_url 
end 

Répondre

1

comptes de service ne sont pas vos comptes personnels. Comptes de service belong to your application. Assurez-vous d'avoir activé l'API Drive lorsque vous avez généré le compte de service et défini le rôle sur le propriétaire ou l'éditeur.

Cet extrait de SO post pourrait aussi aider en ce qui concerne le téléchargement en utilisant le compte de service en Ruby:

require 'googleauth' 
    require 'google/apis/drive_v2' 

    Drive = Google::Apis::DriveV2 

    upload_source = "/User/my_user_name/hacking.txt" 
    drive = Drive::DriveService.new 
    # Drive::AUTH_DRIVE is equal to https://www.googleapis.com/auth/drive 
    drive.authorization = Google::Auth.get_application_default([Drive::AUTH_DRIVE]) 
    file = drive.insert_file({title: 'hacking.txt'}, upload_source: upload_source) 
    drive.get_file(file.id, download_dest: '/tmp/my_file.txt') 
+1

Ma question était plus: vous pouvez accéder à la @web_view_link d'un objet créé avec un compte de service? ce qui clarifie .. non :). Tout d'abord télécharger sur le serveur et envoyer * ce * lien à l'utilisateur fera le travail. – catch22