Uygulamamda Google Drive bağlantısından nasıl müzik akışı yapabilir ve bağlantıyı erişilebilir hale getirebilirim?

Aug 16 2020

Bir web sitesinde kullanıcılar müzik yükleyebilir. Bu müzik google drive hesabıma yükleniyor. Bundan sonra aşağıdaki bağlantı formatı veritabanına yazılır:

https://drive.google.com/uc?id=ID_GOES_HERE

Şimdi bağlantıya eriştiğinizde, bunun gibi bir şey değişir:

https://doc-14-8s-docs.googleusercontent.com/docs/securesc/m4p0h6h3bpkoufgbajruvng9n4f51clu/fnjf7ftnl18svtcblses77hapi91jpe5/1597565925000/10139445714759083419/10139445714759083419/1mLu_myEgts9eaoWv6S9nxu8n4qfZM0Rr?authuser=0

Uzun bağlantı, uygulamanın müziği çalması için kullanılan veritabanındaki bağlantıdır, ancak artık orada açma iznim yok. Son ve uzun bağlantıyı nasıl erişilebilir hale getirebilirim? Bu uzun bağlantıyı herkese açık hale getirmenin bir yolu var mı?

Teşekkür ederim!

    <form id="form">
  <input name="file" id="uploadfile" type="file">
  <input name="filename" id="filename" type="text">
  <input id="submit" type="submit">
</form>
<script>
const form = document.getElementById('form');
form.addEventListener('submit', e => {
  e.preventDefault();
  const file = form.file.files[0];
  const fr = new FileReader();
  fr.readAsArrayBuffer(file);
  fr.onload = f => {
    
    const url =   "https://script.google.com/macros/s/###/exec";  // <---    Please set the URL of Web Apps.

    const qs = new URLSearchParams({filename:    form.filename.value || file.name, mimeType: file.type});
fetch(`${url}?${qs}`, {method: "POST", body: JSON.stringify([...new Int8Array(f.target.result)])})
.then(res => res.json())
.then(e => console.log("https://drive.google.com/uc?   export=download&id=" + e.fileId))
    .catch(err => console.log(err));
  }
});
</script>

Bu, google uygulama komut dosyasıdır

function doPost(e) {
  const folderId = "root";  // Folder ID which is used for   putting the file, if you need.

  const blob =   Utilities.newBlob(JSON.parse(e.postData.contents),   e.parameter.mimeType, e.parameter.filename);
  const file = DriveApp.getFolderById(folderId ||  "root").createFile(blob);
  const responseObj = {filename: file.getName(), fileId:  file.getId(), fileUrl: file.getUrl()};
  return   ContentService.createTextOutput(JSON.stringify(responseObj  )).setMimeType(ContentService.MimeType.JSON);
}

------- DÜZENLE -------

Verilen çözümü denedim:

ne yazık ki beklendiği gibi çalışmıyor .. Aşağıdaki bağlantıyı alıyorum:

https://drive.google.com/uc?export=download&id=1Tnh8UgAzFKrp6e-8QCl21v16L3yVCqso 

şimdi kimliği ondan alıp buraya eklediğimde:

http://docs.google.com/uc?export=open&id=your_file_id 

bunun sonucu, ihtiyacım olan bağlantı olan gerçekten uzun bir bağlantı. Bu, örneğin özel tarayıcı modundayken hala erişilebilir değil, beni istemediğim oturum açmaya zorluyor. Çözümünüzdeki gibi bağlantıyla erişilebilir olmalıdır. Bu bağlantı:

https://doc-08-8s-docs.googleusercontent.com/docs/securesc/m4p0h6h3bpkoufgbajruvng9n4f51clu/cgag5dus6c18p9hc1hv0362urudm2g6t/1597730475000/10139445714759083419/10139445714759083419/1Tnh8UgAzFKrp6e-8QCl21v16L3yVCqso?e=open&authuser=0 

bu bağlantı nasıl erişilebilir hale getirilir?

Görünüşe göre bu bağlantı, belirlediğiniz izinlere sahip http://docs.google.com/uc?export=open&id=your_file_id ancak uzun bağlantıyı kopyalarsanız, bu izin ayarlarını sağlamaz, yine de engeller.

Yanıtlar

2 Viney Aug 16 2020 at 12:29

Dosyanızı oluşturduktan sonra, ona kimin erişebileceğini belirleyen uygun bir erişim düzeyi ve bu dosyayla ne yapabileceklerini belirleyen bir izin düzeyi (okuma / yazma / silme) vermeniz gerekir.

Kullanım durumunuz için, bir bağlantıyla halka açık ve salt okunur olmalıdır. Bu, uygulama komut dosyasında şu şekilde yapabilirsiniz:

const file = DriveApp.getFolderById(folderId ||  "root").createFile(blob);
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW); // <-- add this