问题描述
我正在尝试使用 google drive api 获取文件,默认情况下该文件不可共享,我希望将其设为可共享.
I am trying to get the file using google drive api, by default the file is not shareable i want to make it shareable.
这是我的代码:-
<script type="text/javascript" src="https://apis.google.com/js/api.js"></script>
<script src="https://apis.google.com/js/client.js"></script>
// The Browser API key obtained from the Google Developers Console.
// Replace with your own Browser API key, or your own key.
var developerKey = 'XXXXXXXXXX_ff_NX66eb-XXXXXXXXXXX';
// The Client ID obtained from the Google Developers Console. Replace with your own Client ID.
var clientId = "XXXXXXXXXX-hs4ujaro5sc3d0g8qndtcq2tl279cfm1.apps.googleusercontent.com"
// Replace with your own App ID. (Its the first number in your Client ID)
var appId = "XXXXXXXXXX";
// Scope to use to access user's Drive items.
var scope = ['https://www.googleapis.com/auth/drive'];
var pickerApiLoaded = false;
var oauthToken;
$scope.addGoogleDriveFile = function() {
gapi.load('auth', {'callback': onAuthApiLoad});
gapi.load('picker', {'callback': onPickerApiLoad});
gapi.client.setApiKey(developerKey);
}
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 searching images.
function createPicker() {
if (pickerApiLoaded && oauthToken) {
var view = new google.picker.View(google.picker.ViewId.DOCS);
var picker = new google.picker.PickerBuilder()
.enableFeature(google.picker.Feature.NAV_HIDDEN)
.setAppId(appId)
.setOAuthToken(oauthToken)
.addView(view)
.addView(new google.picker.DocsUploadView())
.setDeveloperKey(developerKey)
.setCallback(pickerCallback)
.build();
picker.setVisible(true);
}
}
// A simple callback implementation.
function pickerCallback(data) {
if (data.action == google.picker.Action.PICKED) {
console.log(data);
gapi.client.load('drive', 'v2').then(function() {
var request = gapi.client.drive.files.get({
'fileId': data.docs[0].id
});
request.execute(function(resp) {
console.log(resp);
});
});
}
}
我收到以下回复:-
{
"kind": "drive#file",
"id": "0B2Tb9btqdPGHeDl2NU5mYXRIaGc",
"etag": ""rCKCAyesbPCaBxGt0eDJcEBQNUI/MTQ1ODgxNDU0MDg2NA"",
"selfLink": "https://www.googleapis.com/drive/v2/files/0B2Tb9btqdPGHeDl2NU5mYXRIaGc",
"webContentLink": "https://docs.google.com/uc?id=0B2Tb9btqdPGHeDl2NU5mYXRIaGc&export=download",
"alternateLink": "https://drive.google.com/file/d/0B2Tb9btqdPGHeDl2NU5mYXRIaGc/view?usp=drivesdk",
"iconLink": "https://ssl.gstatic.com/docs/doclist/images/icon_12_pdf_list.png",
"thumbnailLink": "https://lh6.googleusercontent.com/iriNEeCbpP3OfCxntpc7sK7Dok03tcBJ86X4Be_sFgLXXG1Ta8b2WOM6pF6sEpS8ytaMvA
=s220",
"title": "POTSS-2012.pdf",
"mimeType": "application/pdf",
"labels": {
"starred": false,
"hidden": false,
"trashed": false,
"restricted": false,
"viewed": true
},
"createdDate": "2016-03-24T09:57:00.978Z",
"modifiedDate": "2016-03-24T10:15:40.864Z",
"modifiedByMeDate": "2016-03-24T09:57:00.978Z",
"lastViewedByMeDate": "2016-03-24T09:57:00.978Z",
"markedViewedByMeDate": "1970-01-01T00:00:00.000Z",
"version": "130",
"parents": [
{
"kind": "drive#parentReference",
"id": "0AGTb9btqdPGHUk9PVA",
"selfLink": "https://www.googleapis.com/drive/v2/files/0B2Tb9btqdPGHeDl2NU5mYXRIaGc/parents/0AGTb9btqdPGHUk9PVA"
,
"parentLink": "https://www.googleapis.com/drive/v2/files/0AGTb9btqdPGHUk9PVA",
"isRoot": true
}
],
"downloadUrl": "https://doc-0o-3g-docs.googleusercontent.com/docs/securesc/79n10ihd7kdei03rpq502qv5437nv33f
/b6p7kupn55cuqeqq8l0d9vc1orf4bkiv/1458813600000/07489391032112366212/07489391032112366212/0B2Tb9btqdPGHeDl2NU5mYXRIaGc
?e=download&gd=true",
"userPermission": {
"kind": "drive#permission",
"etag": ""rCKCAyesbPCaBxGt0eDJcEBQNUI/QKpDIyepJ3z6YHq0L3ksgvrZLSo"",
"id": "me",
"selfLink": "https://www.googleapis.com/drive/v2/files/0B2Tb9btqdPGHeDl2NU5mYXRIaGc/permissions/me"
,
"role": "owner",
"type": "user"
},
"originalFilename": "POTSS-2012.pdf",
"fileExtension": "pdf",
"md5Checksum": "5b60cd94d0c0647c8828a60b8ce7efe4",
"fileSize": "519097",
"quotaBytesUsed": "519097",
"ownerNames": [
"xxxxx IT"
],
"owners": [
{
"kind": "drive#user",
"displayName": "xxxx IT",
"isAuthenticatedUser": true,
"permissionId": "07489391032112366212",
"emailAddress": "it%xxxx .com@xxxxx.com"
}
],
"lastModifyingUserName": "xxxxx IT",
"lastModifyingUser": {
"kind": "drive#user",
"displayName": "xxxx IT",
"isAuthenticatedUser": true,
"permissionId": "07489391032112366212",
"emailAddress": "it%xxxx.com@xxxx.com"
},
"editable": true,
"copyable": true,
"writersCanShare": true,
"shared": false,
"explicitlyTrashed": false,
"appDataContents": false,
"headRevisionId": "0B2Tb9btqdPGHT0pGV1FRRis0MmlJVmZsOE5uMU5UK2FNR0g0PQ",
"spaces": [
"drive"
]
}
这里我想更改 "shared": true 而不是 "shared": false
Here i want to change "shared": true Instead of "shared": false
如何更改其权限?
有什么想法吗?
谢谢
推荐答案
@arun 你可能想了解更多关于 权限资源."shared"要true,每个文件权限需要指定一个role
、type
和电子邮件地址或域
.作为文件(文档、表格等)的所有者,您需要提供要设置的适当权限.
@arun you may want to read more about Permission resource in Drive API. For "shared" to be true, each file permission needs to specifies a role
, type
, and email address or domain
. As an owner of the file (Docs, Sheets, etc.), you will need to provide the appropriate permission to be set to.
这是一个示例,使用 Permissions.create(我推荐使用 Drive API v3)
Here is an example, using the Permissions.create (I recommend using Drive API v3)
POST https://www.googleapis.com/drive/v3/files/{fileId}/permissions?key={YOUR_API_KEY}
{
"role": "reader",
"type": "user",
"emailAddress": "xxxxxxxx@xxx.com"
}
来自云端硬盘的响应Files.get:
GET https://www.googleapis.com/drive/v3/files/{fileId}?fields=appProperties%2CfileExtension%2Ckind%2CmimeType%2Cshared&key={YOUR_API_KEY}
{
"kind": "drive#file",
"mimeType": "application/vnd.google-apps.document",
"shared": true
}
但是,如果您无法切换到 Drive v3,您仍然可以使用 Permission.insert 从 Drive v2 来完成这项工作.希望这对您有所帮助并祝您好运!
However, if you are unable to switch to the Drive v3, you can still use the Permission.insert from Drive v2 to do the job. Hope this helpful and good luck!
这篇关于如何使用 google drive api 使文件可共享的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!