Uygulamamda Google Drive bağlantısından nasıl müzik akışı yapabilir ve bağlantıyı erişilebilir hale getirebilirim?
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
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