如何解决自动化将电子邮件地址添加到Google文档权限列表的过程 注意建议参考
我正在尝试建立一个系统,客户可以在WooCommerce中购买视频,然后接收包含指向Google云端硬盘中托管视频的链接的电子邮件。这部分已经完成并且可以工作。
接下来我需要做的是确保只有买家才能观看视频,以最大程度地减少“链接交易”,因为有一个在线社区,Facebook团体等对这种材料感兴趣的人,并且会购买链接后可能会共享该链接。我知道无法完全保护它,就像Netflix无法打击帐户共享一样。
因此,为了将访问权限限制为仅买家,我想根据客户在退出在线商店时提供的电子邮件,为Google云端硬盘中的文件添加特定权限。
我选择使用Google云端硬盘,因为它比在我们的网络托管上购买所需的大量Gigs托管视频要便宜。
我的问题是:
如何自动将电子邮件地址添加到该Google云端硬盘文件的权限部分的过程?
理想的解决方案是:
- 用户购买视频并接收到视频的链接
- 用户的电子邮件(在结帐时提供)已添加到Google云端硬盘的权限列表(共享选项)中
- 非用户无法观看视频
解决方法
如果您想向文件添加新权限,则可以使用Drive API的 <template>
<div class="pt-3">
<div v-show="showText == true" class="text">
<h2>Get started by adding a new todo.</h2>
<p>Click on the item to check it done.</p>
<p class="warnings">This is a prototype app. Please do not input any sensitive information!</p>
</div>
<v-row class="addtodo d-flex justify-center">
<v-col cols="8">
<v-text-field
class="addtext"
label="New Todo"
outlined
v-model="newItem"
@keyup.enter="addItem"
></v-text-field>
</v-col>
<v-col cols="1">
<v-btn class="btn" large color="primary" :disabled="newItem == ''" @click="addItem">Add</v-btn>
</v-col>
</v-row>
<transition-group class="d-flex flex-column justify-center align-center" name="fade">
<v-card
class="d-flex justify-center align-center ma-2 text-left"
width="400"
v-for="(ToDo,index) in ToDos"
:key="ToDo.id"
@click="checked = !checked"
>
<v-row class="d-flex justify-space-around">
<v-col cols="8">
<v-list-item-title
:class="{ done: checked }" class="headline mb-1">{{ index + 1}} - {{ ToDo.name }}</v-list-item-title>
</v-col>
<v-col class="tools text-right">
<v-btn class="dicon" icon color="secondary" @click="editToDo(ToDo.id)">
<v-icon>mdi-pencil</v-icon>
</v-btn>
<v-btn class="dicon" icon color="red" @click="deleteToDo(ToDo.id)">
<v-icon>mdi-delete</v-icon>
</v-btn>
</v-col>
</v-row>
</v-card>
</transition-group>
</div>
</template>
<script>
import { db } from "../firebase/db";
export default {
name: "ToDoList",data() {
return {
ToDos: [],ToDo: [],newItem: "",index: "",showText: true,checked: false,currentlyEditing: null,todoEditText: "",};
},methods: {
async addItem() {
if (this.newItem) {
await db.collection("ToDos").add({ name: this.newItem });
this.newItem = "";
}
this.deleteText();
},deleteToDo(id) {
db.collection("ToDos").doc(id).delete();
},deleteText: function () {
this.showText = false;
},},beforeDestroy() {
clearInterval(this.showText);
},firestore: {
ToDos: db.collection("ToDos"),};
</script>
<style>
.done {
text-decoration: line-through;
}
.text {
margin: 0 auto;
margin-top: -200px;
text-align: center;
padding: 1vh;
}
.warnings {
color: red;
}
h2 {
margin: 0 auto;
text-align: center;
margin-top: 30vh;
}
.addtodo {
position: fixed;
bottom: -20px;
right: 0;
left: 0;
padding-right: 30px;
z-index: 1111;
background: white;
box-shadow: 4px 4px 4px 4px #888;
}
.btn {
margin-top: 6px;
}
.addtext {
}
.todolist {
margin: 0 auto;
color: red;
display: flex;
text-align: left;
}
.tools {
position: absolute;
top: 2px;
padding: 0;
margin: 0 auto;
}
</style>
方法。
这可以通过使用以下请求完成:
this.getMedia().then((localStream) => {
this.localStream = localStream; // add transform function option here and then,send it live
this.mediaCall.answer(this.localStream);
Permissions: create
是您要共享的视频的ID。
您还应该添加以下请求正文
POST https://www.googleapis.com/drive/v3/files/fileId/permissions
注意
请记住,可以根据您的需要自定义上述主体。
建议
由于您要基于购买添加权限,因此可以就地设置执行上述操作的Apps脚本脚本,并可以使用基于时间的触发器来触发其执行。
Apps Script是一个功能强大的开发平台,可用于构建…Web应用程序和自动执行任务。令其与众不同的是它易于使用和创建与G Suite集成的应用程序。由于您要使用Drive API,因此有两种选择来实现:使用集成的fileId
服务或使用高级{
"kind": "drive#permission","type": "user","emailAddress": "EMAIL_ADDRESS","role": "writer"
}
服务。这两种方法都可以让您实现与上述相同的请求并使用触发器。
参考
我建议您看看下面的链接,因为它们可能对您有帮助:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。