2017-08-28 10 views
1

サービスアカウントでgoogleドライブを使用するAPIを作成しています。サービスアカウントを持つgoogle driveオブジェクトのダウンロードリンク

Googleドライブオブジェクトがどのように見える @web_view_linkプロパティが付属してい

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

私は個人アカウントを使用してブラウザでこの@web_view_linkにアクセスすると、リンクが機能的であり、オブジェクトがダウンロードできますそこから。

私はサービスアカウントを使用してブラウザで@web_view_linkを貼り付けるとき、私はアカウントの所有者にアクセスしていますがさえカントー、Googleドライブは、アクセス権について不平を言うと、私はそれにアクセスすることはできません。

サービスアカウントを使用してGoogleドライブからダウンロードリンクにアクセスできますか?

私はgoogle-drive-ruby宝石を使用していますし、これは@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 

答えて

1

サービスアカウントは、あなたの個人的なアカウントではありません。サービスアカウントbelong to your application。サービスアカウントを生成したときにドライブAPIを有効にして、役割を所有者または編集者に設定していることを確認してください。 SO postから

このコードはまた、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

私の質問は以上であった:あなたは、サービスアカウントを使用して作成したオブジェクトの@web_view_linkにアクセスすることができますか?これは明らかに..いいえ:)最初にサーバーにダウンロードし、* this *リンクをユーザーに送信すると作業が完了します。 – catch22

関連する問題