2015-12-03 3 views
0

Я хотел бы получить доступ к своему собственному приводу Google и синхронизировать его файлы с моим сервером. Например, для нашего офиса легко редактировать коллективно и добавлять файлы на Диске, и если я могу просто получить их на сервере, я бы хотел использовать их на нашей веб-странице. Я знаю, что могу получить доступ к отдельным файлам с идентификатором файла, но мне нужно увидеть родительские «папки» (файл на диске) всего содержимого и перейти оттуда.Использование API Google Диска, как я могу синхронизировать мои общие файлы дисков Google на другом сервере?

Кажется, что требуется Oauth или подобное, но если это общедоступная папка, и я не пытаюсь получить доступ к диску пользователей (правильно, я обращаюсь к своим собственным), я не могу понять, как это сделать что. Любая помощь была бы очень признательна!

+0

И что не так с Oauth? У вас есть учетные данные. Если вы создадите приложение и зарегистрируете его, тогда дайте ему разрешение на доступ к вашему диску, вы сможете использовать Oauth, чтобы приложение получило то, что вы хотите получить. Так что, может быть, вы должны это сформулировать, в чем проблема? – joshp

+0

- это ваш вопрос, как использовать api без oauth с его общей папки? –

+0

Я могу просто не понимать его правильно. Но я думал, что Oauth как есть, или, как объясняют примеры Google, захочет проверить, какой пользователь обращается к системе, генерирует новый токен на основе учетных данных, как только они разрешают доступ. Поскольку это сервер для сервера, я немного потерял, как это происходит. –

ответ

1

«Я не пытаюсь получить доступ к диску пользователей (справа, я обращаюсь к своим собственным»).

Но 1/Как Google знает, что это вы? 2/Как Google знает, что приложение является тем, на которое вы предоставили разрешения?

Ответ на оба вопроса: OAuth, предполагая, что вы хотите получить доступ к файлам с помощью приложения.

Таким образом, псевдокод для вашего приложения будет выглядеть примерно так. - получить токен доступа - использовать этот токен доступа для получения родительской папки. сохраните его ID - используйте идентификатор родительской папки, чтобы получить содержимое всех своих детей.

+0

Да, это имеет смысл. Я думаю, что мне не хватает понимания о том, как мое приложение должно идентифицировать меня, используя Oauth, когда я делаю это в программе, но не нажимаю на экран, принимающий этот запрос доступа. –

+0

Это может помочь http://stackoverflow.com/questions/19766912/how-do-i-authorise-an-app-web-or-installed-without-user-intervention-canonic – pinoyyid

1

Вы можете использовать Google Drive API

Sample От Google Drive API Reference Page.

/** 
* Print a file's metadata. 
* 
* @param {String} fileId ID of the file to print metadata for. 
*/ 
function printFile(fileId) { 
    var request = gapi.client.drive.files.get({ 
    'fileId': fileId 
    }); 
    request.execute(function(resp) { 
    console.log('Title: ' + resp.title); 
    console.log('Description: ' + resp.description); 
    console.log('MIME type: ' + resp.mimeType); 
    }); 
} 

/** 
* Download a file's content. 
* 
* @param {File} file Drive File instance. 
* @param {Function} callback Function to call when the request is complete. 
*/ 
function downloadFile(file, callback) { 
    if (file.downloadUrl) { 
    var accessToken = gapi.auth.getToken().access_token; 
    var xhr = new XMLHttpRequest(); 
    xhr.open('GET', file.downloadUrl); 
    xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken); 
    xhr.onload = function() { 
     callback(xhr.responseText); 
    }; 
    xhr.onerror = function() { 
     callback(null); 
    }; 
    xhr.send(); 
    } else { 
    callback(null); 
    } 
} 

Или вы можете использовать Google Apps Script для создания REST API, который возвращает информацию о файле. Using the Execution API

Пример код:

function GetFiles() { 

var result = []; 

var files = DriveApp.getFiles(); 
while (files.hasNext()) { 
    var file = files.next(); 
    var fileInfo = new Object(); 
    fileInfo.id = file.getId(); 
    fileInfo.name = file.getName(); 
    fileInfo.size = file.getSize(); 
    fileInfo.url = file.getDownloadUrl(); 
    result.push(fileInfo); 
} 
    return result; 
} 

Приведенные выше код возвращает список объектов, которые содержат файл идентификатор, имя, размер, и URL-адрес загрузки.

Надеюсь, что это поможет.

+0

Будет ли это работать без разрешения, то предоставление «файла» является общедоступным? –

+0

Для этого не требуется авторизация. Для доступа к API вам требуется авторизация. Тот факт, что ресурс, который вы хотите, является открытым, не имеет значения. С его помощью вы можете легко выполнить авторизацию. –

+0

https://developers.google.com/drive/web/auth/web-server. Имеет поток для аутентификации сервера. –

Смежные вопросы