Google drive Public

Estoy trabajando con el selector de unidades de Google, donde una vez que se selecciona un elemento de la unidad de Google, se genera una URL. El problema es que solo el propietario puede acceder a esa URL y, por lo tanto, no es público. Quiero que la URL sea públicamente accesible.

Por lo tanto, he consultado la siguiente guía: https://developers.google.com/picker/docs/reference#Response.Documents

y creo que la clase Document.AUDIENCE sería la más adecuada, sin embargo, no sé cómo agregar esos criterios al código de ejemplo del selector de Google Drive a continuación.

Cualquier ayuda sería muy apreciada.

    Google Picker Example  // The Browser API key obtained from the Google Developers Console. var developerKey = 'xxxxxxxYYYYYYYY-12345678'; // The Client ID obtained from the Google Developers Console. Replace with your own Client ID. var clientId = "1234567890-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com" // Scope to use to access user's photos. var scope = ['https://www.googleapis.com/auth/photos']; var pickerApiLoaded = false; var oauthToken; // Use the API Loader script to load google.picker and gapi.auth. function onApiLoad() { gapi.load('auth', {'callback': onAuthApiLoad}); gapi.load('picker', {'callback': onPickerApiLoad}); } function onAuthApiLoad() { window.gapi.auth.authorize( { 'client_id': clientId, 'scope': scope, 'immediate': false }, handleAuthResult); } function onPickerApiLoad() { pickerApiLoaded = true; createPicker(); } function handleAuthResult(authResult) { if (authResult && !authResult.error) { oauthToken = authResult.access_token; createPicker(); } } // Create and render a Picker object for picking user Photos. function createPicker() { if (pickerApiLoaded && oauthToken) { var picker = new google.picker.PickerBuilder(). addView(google.picker.ViewId.PHOTOS). setOAuthToken(oauthToken). setDeveloperKey(developerKey). setCallback(pickerCallback). build(); picker.setVisible(true); } } // A simple callback implementation. function pickerCallback(data) { var url = 'nothing'; if (data[google.picker.Response.ACTION] == google.picker.Action.PICKED) { var doc = data[google.picker.Response.DOCUMENTS][0]; url = doc[google.picker.Document.URL]; } var message = 'You picked: ' + url; document.getElementById('result').innerHTML = message; }    

Para agregar permisos públicos al archivo seleccionado. Necesitará usar la api de la unidad para agregar permisos de archivos

Consulte https://developers.google.com/drive/v2/reference/permissions/insert

Deberá insertar un permiso en el archivo con el rol establecido en “lector” y el tipo en “cualquier persona”

Puedes consultar la implementación de javascript en el ejemplo.

 /** * Insert a new permission. * * @param {String} fileId ID of the file to insert permission for. * @param {String} value User or group e-mail address, domain name or * {@code null} "default" type. * @param {String} type The value "user", "group", "domain" or "default". * @param {String} role The value "owner", "writer" or "reader". */ function insertPermission(fileId, value, type, role) { var body = { 'value': value, 'type': type, 'role': role }; var request = gapi.client.drive.permissions.insert({ 'fileId': fileId, 'resource': body }); request.execute(function(resp) { }); } 

Para elaborar más detalladamente la respuesta de gapi.client.drive , aquí es cómo lo haría sin utilizar la API de Javascript gapi.client.drive .

Digamos que some_id es su ID de documento:

 request = gapi.client.request({ path: '/drive/v2/files/some_id/permissions', method: 'POST', body: { role: 'reader' type: 'anyone' } }); request.execute(function (res) { console.log(res); }) 

Lo que genera una solicitud a https://content.googleapis.com/drive/v2/files/some_id/permissions?alt=json con este cuerpo: {role: "reader", type: "anyone"}

Aquí está el resultado que obtendrá:

 { "kind": "drive#permission", "etag": "some etage", "id": "anyone", "selfLink": "https://www.googleapis.com/drive/v2/files/some_id/permissions/anyone", "role": "reader", "type": "anyone" }