Google Drive की हर फ़ाइल, फ़ोल्डर, और शेयर की गई ड्राइव के साथ, permissions
संसाधन जुड़े होते हैं. हर संसाधन, किसी खास type
(user
, group
, domain
,
anyone
) और role
(owner
, organizer
, fileOrganizer
, writer
,
commenter
, reader
) के लिए अनुमति की पहचान करता है. उदाहरण के लिए, किसी फ़ाइल में किसी खास उपयोगकर्ता (type=user
) को सिर्फ़ पढ़ने का ऐक्सेस (role=reader
) देने वाली अनुमति हो सकती है. वहीं, दूसरी अनुमति से किसी खास ग्रुप (type=group
) के सदस्यों को फ़ाइल में टिप्पणियां जोड़ने की अनुमति (role=commenter
) मिल सकती है.
भूमिकाओं और हर भूमिका के लिए अनुमति वाली कार्रवाइयों की पूरी सूची के लिए, भूमिकाएं और अनुमतियां देखें.
अनुमतियां कैसे काम करती हैं
किसी फ़ोल्डर के लिए अनुमति की सूचियां, नीचे की ओर लागू होती हैं. सभी चाइल्ड फ़ाइलें और फ़ोल्डर, पैरंट फ़ोल्डर से अनुमतियां इनहेरिट करते हैं. जब भी अनुमतियों या हैरारकी में बदलाव किया जाता है, तो नेस्ट किए गए सभी फ़ोल्डर में अनुमतियां अपने-आप लागू हो जाती हैं. उदाहरण के लिए, अगर कोई फ़ाइल किसी फ़ोल्डर में मौजूद है और उस फ़ोल्डर को किसी दूसरे फ़ोल्डर में ले जाया जाता है, तो नए फ़ोल्डर की अनुमतियां फ़ाइल पर लागू हो जाती हैं. अगर नए फ़ोल्डर में, फ़ाइल के उपयोगकर्ता को "लेखक" जैसी नई भूमिका दी जाती है, तो उसकी पुरानी भूमिका बदल जाती है.
इसके उलट, अगर किसी फ़ाइल को किसी फ़ोल्डर से role=writer
इनहेरिट किया जाता है और उसे "रीडर" भूमिका देने वाले किसी दूसरे फ़ोल्डर में ले जाया जाता है, तो फ़ाइल को अब role=reader
इनहेरिट किया जाता है.
शेयर की गई ड्राइव में मौजूद किसी फ़ाइल या फ़ोल्डर से, इनहेरिट की गई अनुमतियां नहीं हटाई जा सकतीं. इसके बजाय, इन अनुमतियों को उस सीधे या किसी दूसरे पैरंट खाते में बदलना चाहिए जिससे इन्हें इनहेरिट किया गया था. "मेरी ड्राइव" या "मुझसे शेयर की गई" में मौजूद आइटम से, इनहेरिट की गई अनुमतियां हटाई जा सकती हैं.
इसके उलट, 'मेरी ड्राइव' में मौजूद किसी फ़ाइल या फ़ोल्डर के लिए, इनहेरिट की गई अनुमतियों को बदला जा सकता है. इसलिए, अगर किसी फ़ाइल को My Drive फ़ोल्डर से role=writer
इनहेरिट किया जाता है, तो अनुमति के लेवल को कम करने के लिए, फ़ाइल पर role=reader
सेट किया जा सकता है.
फ़ाइल की सुविधाओं को समझना
permissions
संसाधन से यह तय नहीं होता कि मौजूदा उपयोगकर्ता, किसी फ़ाइल या फ़ोल्डर पर कार्रवाइयां कर सकता है या नहीं.
इसके बजाय, files
संसाधन में बूलियन capabilities
फ़ील्ड का कलेक्शन होता है. इनका इस्तेमाल यह बताने के लिए किया जाता है कि किसी फ़ाइल या फ़ोल्डर पर कोई कार्रवाई की जा सकती है या नहीं. Google Drive API, फ़ाइल या फ़ोल्डर से जुड़ी मौजूदा उपयोगकर्ता की अनुमतियों के संसाधन के आधार पर, ये फ़ील्ड सेट करता है.
उदाहरण के लिए, जब ऐलेक्स आपके ऐप्लिकेशन में लॉग इन करके कोई फ़ाइल शेयर करने की कोशिश करता है, तो फ़ाइल पर अनुमतियों के लिए ऐलेक्स की भूमिका की जांच की जाती है. अगर भूमिका से उन्हें फ़ाइल शेयर करने की अनुमति मिलती है, तो फ़ाइल से जुड़े capabilities
, जैसे कि canShare
, को भूमिका के हिसाब से भरा जाता है. अगर ऐलेक्स को फ़ाइल शेयर करनी है, तो आपका ऐप्लिकेशन capabilities
की जांच करता है, ताकि यह पक्का किया जा सके कि canShare
को true
पर सेट किया गया है.
फ़ाइल capabilities
को वापस पाने का उदाहरण देखने के लिए, फ़ाइल से जुड़ी सुविधाएं पाना देखें.
फ़ाइल से जुड़ी सुविधाएं पाना
जब आपका ऐप्लिकेशन कोई फ़ाइल खोलता है, तो उसे फ़ाइल की क्षमताओं की जांच करनी चाहिए. साथ ही, मौजूदा उपयोगकर्ता की अनुमतियों को दिखाने के लिए यूज़र इंटरफ़ेस (यूआई) को रेंडर करना चाहिए. उदाहरण के लिए, अगर उपयोगकर्ता के पास फ़ाइल पर canComment
की अनुमति नहीं है, तो यूज़र इंटरफ़ेस (यूआई) में टिप्पणी करने की सुविधा बंद होनी चाहिए.
सुविधाओं की जांच करने के लिए, files
संसाधन पर get()
तरीका कॉल करें. इसके लिए, fileId
पाथ पैरामीटर और fields
पैरामीटर को capabilities
फ़ील्ड पर सेट करें. fields
पैरामीटर का इस्तेमाल करके फ़ील्ड दिखाने के बारे में ज़्यादा जानने के लिए, चुनिंदा फ़ील्ड दिखाना लेख पढ़ें.
एक उदाहरण दिखाएं
नीचे दिए गए कोड सैंपल में, उपयोगकर्ता की अनुमतियों की पुष्टि करने का तरीका बताया गया है. जवाब में, फ़ाइल पर उपयोगकर्ता के पास मौजूद सुविधाओं की सूची दिखती है. हर सुविधा, किसी ऐसी कार्रवाई से जुड़ी होती है जिसे उपयोगकर्ता कर सकता है. कुछ फ़ील्ड सिर्फ़ शेयर की गई ड्राइव में मौजूद आइटम के लिए पॉप्युलेट होते हैं.
अनुरोध
GET https://www.googleapis.com/drive/v3/files/FILE_ID
?fields=capabilities
रिस्पॉन्स
{ "capabilities": { "canAcceptOwnership": false, "canAddChildren": false, "canAddMyDriveParent": false, "canChangeCopyRequiresWriterPermission": true, "canChangeSecurityUpdateEnabled": false, "canComment": true, "canCopy": true, "canDelete": true, "canDownload": true, "canEdit": true, "canListChildren": false, "canModifyContent": true, "canModifyContentRestriction": true, "canModifyLabels": true, "canMoveChildrenWithinDrive": false, "canMoveItemOutOfDrive": true, "canMoveItemWithinDrive": true, "canReadLabels": true, "canReadRevisions": true, "canRemoveChildren": false, "canRemoveMyDriveParent": true, "canRename": true, "canShare": true, "canTrash": true, "canUntrash": true } }
Drive के संसाधनों को शेयर करने के उदाहरण
शेयर करने के पांच अलग-अलग तरीके हैं:
'मेरी ड्राइव' में मौजूद किसी फ़ाइल को शेयर करने के लिए, उपयोगकर्ता के पास
role=writer
याrole=owner
होना चाहिए.अगर फ़ाइल के लिए
writersCanShare
बूलियन वैल्यू कोfalse
पर सेट किया गया है, तो उपयोगकर्ता के पासrole=owner
होना चाहिए.अगर
role=writer
का ऐक्सेस कुछ समय के लिए दिया गया है और उसके खत्म होने की तारीख और समय तय है, तो वह फ़ाइल शेयर नहीं कर सकता. ज़्यादा जानकारी के लिए, फ़ाइल का ऐक्सेस सीमित करने के लिए, ऐक्सेस खत्म होने की तारीख सेट करना लेख पढ़ें.
'मेरी ड्राइव' में मौजूद किसी फ़ोल्डर को शेयर करने के लिए, उपयोगकर्ता के पास
role=writer
याrole=owner
होना चाहिए.अगर फ़ाइल के लिए
writersCanShare
बूलियन वैल्यू कोfalse
पर सेट किया गया है, तो उपयोगकर्ता के पास ज़्यादा अनुमति वालीrole=owner
होनी चाहिए.role=writer
के 'मेरी ड्राइव' फ़ोल्डर के लिए, कुछ समय के लिए ऐक्सेस देने की अनुमति नहीं है. यह ऐक्सेस, ऐक्सेस खत्म होने की तारीख और समय के हिसाब से मिलता है. ज़्यादा जानकारी के लिए, फ़ाइल का ऐक्सेस सीमित करने के लिए, ऐक्सेस खत्म होने की तारीख सेट करना लेख पढ़ें.
शेयर की गई ड्राइव में कोई फ़ाइल शेयर करने के लिए, उपयोगकर्ता के पास
role=writer
,role=fileOrganizer
याrole=organizer
होना चाहिए.writersCanShare
सेटिंग, शेयर की गई ड्राइव में मौजूद आइटम पर लागू नहीं होती. इसे हमेशाtrue
पर सेट माना जाता है.
शेयर की गई ड्राइव में कोई फ़ोल्डर शेयर करने के लिए, उपयोगकर्ता के पास
role=organizer
होना चाहिए.- अगर शेयर की गई किसी ड्राइव पर
sharingFoldersRequiresOrganizerPermission
पाबंदी कोfalse
पर सेट किया गया है, तोrole=fileOrganizer
ऐक्सेस वाले उपयोगकर्ता उस शेयर की गई ड्राइव में फ़ोल्डर शेयर कर सकते हैं.
- अगर शेयर की गई किसी ड्राइव पर
शेयर की गई ड्राइव की सदस्यता मैनेज करने के लिए, उपयोगकर्ता के पास
role=organizer
होना चाहिए. सिर्फ़ उपयोगकर्ता और ग्रुप, शेयर की गई ड्राइव के सदस्य हो सकते हैं.
अनुमति बनाना
अनुमति बनाते समय, इन दो फ़ील्ड में जानकारी डालना ज़रूरी है:
type
:type
से अनुमति के दायरे (user
,group
,domain
याanyone
) की पहचान होती है.type=user
वाली अनुमति किसी खास उपयोगकर्ता पर लागू होती है, जबकिtype=domain
वाली अनुमति किसी खास डोमेन के सभी लोगों पर लागू होती है.role
:role
फ़ील्ड से उन ऑपरेशन की पहचान होती है जिन्हेंtype
कर सकता है. उदाहरण के लिए,type=user
औरrole=reader
वाली अनुमति से, किसी उपयोगकर्ता को फ़ाइल या फ़ोल्डर का सिर्फ़ पढ़ने का ऐक्सेस मिलता है. इसके अलावा,type=domain
औरrole=commenter
के साथ अनुमति देने पर, डोमेन में मौजूद सभी लोग फ़ाइल पर टिप्पणी कर सकते हैं. भूमिकाओं और हर भूमिका के लिए अनुमति वाली कार्रवाइयों की पूरी सूची के लिए, भूमिकाएं और अनुमतियां देखें.
type=user
या type=group
वाली अनुमति बनाते समय, आपको emailAddress
भी देना होगा, ताकि किसी खास उपयोगकर्ता या ग्रुप को अनुमति से जोड़ा जा सके.
type=domain
वाली अनुमति बनाते समय, आपको अनुमति के साथ किसी खास डोमेन को जोड़ने के लिए, domain
भी देना होगा.
अनुमति बनाने के लिए:
- उस फ़ाइल या फ़ोल्डर के लिए,
fileId
पाथ पैरामीटर के साथcreate()
तरीके का इस्तेमाल करें. - अनुरोध के मुख्य हिस्से में,
type
औरrole
की वैल्यू डालें. - अगर
type=user
याtype=group
है, तोemailAddress
डालें. अगरtype=domain
है, तोdomain
दें.
एक उदाहरण दिखाएं
नीचे दिए गए कोड सैंपल में, अनुमति बनाने का तरीका बताया गया है. रिस्पॉन्स में, असाइन किया गया permissionId
शामिल है. साथ ही, इसमें Permission
संसाधन का एक इंस्टेंस भी होता है.
अनुरोध
POST https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
{ "requests": [ { "type": "user", "role": "commenter", "emailAddress": "alex@altostrat.com" } ] }
रिस्पॉन्स
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "commenter"
}
टारगेट ऑडियंस का इस्तेमाल करना
टारगेट ऑडियंस, लोगों के ऐसे ग्रुप होते हैं जिनके साथ उपयोगकर्ता अपने आइटम शेयर कर सकते हैं. जैसे, डिपार्टमेंट या टीमें. उपयोगकर्ताओं को पूरे संगठन के बजाय, किसी खास या सीमित ऑडियंस के साथ आइटम शेयर करने के लिए कहा जा सकता है. टारगेट ऑडियंस की मदद से, अपने डेटा की सुरक्षा और निजता को बेहतर बनाया जा सकता है. साथ ही, उपयोगकर्ताओं के लिए डेटा को सही तरीके से शेयर करना आसान हो जाता है. ज़्यादा जानकारी के लिए, टारगेट ऑडियंस के बारे में जानकारी देखें.
टारगेट ऑडियंस का इस्तेमाल करने के लिए:
Google Admin console में, मेन्यू > डायरेक्ट्री > टारगेट ऑडियंस पर जाएं.
ऐसा करने के लिए, आपको सुपर एडमिन के अधिकारों वाले खाते से साइन इन करना होगा.
टारगेट ऑडियंस की सूची में, टारगेट ऑडियंस के नाम पर क्लिक करें. टारगेट ऑडियंस बनाने के लिए, टारगेट ऑडियंस बनाना लेख पढ़ें
टारगेट ऑडियंस के यूआरएल से यूनीक आईडी कॉपी करें:
https://admin.google.com/ac/targetaudiences/ID
.type=domain
की मदद से अनुमति बनाएं औरdomain
फ़ील्ड कोID.audience.googledomains.com
पर सेट करें.
यह देखने के लिए कि उपयोगकर्ता टारगेट ऑडियंस के साथ कैसे इंटरैक्ट करते हैं, लिंक शेयर करने के लिए उपयोगकर्ता अनुभव देखें.
सभी अनुमतियों की सूची बनाना
किसी फ़ाइल, फ़ोल्डर या शेयर की गई ड्राइव के लिए सभी अनुमतियां वापस पाने के लिए, permissions
संसाधन पर list()
तरीके का इस्तेमाल करें.
एक उदाहरण दिखाएं
नीचे दिया गया कोड सैंपल, सभी अनुमतियां पाने का तरीका दिखाता है. जवाब में अनुमतियों की सूची दिखती है.
अनुरोध
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
रिस्पॉन्स
{
"kind": "drive#permissionList",
"permissions": [
{
"id": "PERMISSION_ID
",
"type": "user",
"kind": "drive#permission",
"role": "commenter"
}
]
}
अनुमतियां अपडेट करें
किसी फ़ाइल या फ़ोल्डर के लिए अनुमतियां अपडेट करने के लिए, असाइन की गई भूमिका बदली जा सकती है. भूमिका का सोर्स ढूंढने के बारे में ज़्यादा जानने के लिए, भूमिका का सोर्स तय करना लेख पढ़ें.
permissions
संसाधन परupdate()
तरीके को कॉल करें. इसके लिए,permissionId
पाथ पैरामीटर को बदलाव करने की अनुमति पर सेट करें औरfileId
पाथ पैरामीटर को उससे जुड़ी फ़ाइल, फ़ोल्डर या शेयर की गई ड्राइव पर सेट करें.permissionId
ढूंढने के लिए,fileId
पाथ पैरामीटर के साथpermissions
संसाधन परlist()
तरीके का इस्तेमाल करें.अनुरोध में, नए
role
की पहचान करें.
शेयर की गई ड्राइव में मौजूद अलग-अलग फ़ाइलों या फ़ोल्डर के लिए अनुमतियां दी जा सकती हैं. भले ही, उपयोगकर्ता या ग्रुप पहले से ही सदस्य हो. उदाहरण के लिए, ऐलेक्स के पास role=commenter
है, जो शेयर की गई ड्राइव की सदस्यता का हिस्सा है. हालांकि, आपका ऐप्लिकेशन, शेयर की गई ड्राइव में मौजूद किसी फ़ाइल के लिए, ऐलेक्स को
role=writer
ऐक्सेस दे सकता है. इस मामले में, सदस्यता की भूमिका के मुकाबले नई भूमिका में ज़्यादा अनुमतियां होती हैं. इसलिए, फ़ाइल या फ़ोल्डर के लिए नई अनुमति, असल भूमिका बन जाती है.
एक उदाहरण दिखाएं
नीचे दिए गए कोड सैंपल में, किसी फ़ाइल या फ़ोल्डर की अनुमतियों को टिप्पणी करने वाले से लेखक में बदलने का तरीका बताया गया है. रिस्पॉन्स में, permissions
रिसॉर्स का एक इंस्टेंस दिखता है.
अनुरोध
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
{ "requests": [ { "role": "writer" } ] }
रिस्पॉन्स
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "writer"
}
भूमिका का सोर्स तय करना
किसी फ़ाइल या फ़ोल्डर पर भूमिका बदलने के लिए, आपको भूमिका का सोर्स पता होना चाहिए. शेयर की गई ड्राइव के लिए, किसी भूमिका का सोर्स, शेयर की गई ड्राइव की सदस्यता, फ़ोल्डर में भूमिका या फ़ाइल में भूमिका पर आधारित हो सकता है.
शेयर की गई ड्राइव या उसमें मौजूद आइटम के लिए भूमिका का सोर्स तय करने के लिए, fileId
और permissionId
पाथ पैरामीटर के साथ permissions
संसाधन पर get()
तरीका लागू करें. साथ ही, fields
पैरामीटर को permissionDetails
फ़ील्ड पर सेट करें.
permissionId
ढूंढने के लिए, fileId
पाथ पैरामीटर के साथ permissions
संसाधन पर list()
तरीके का इस्तेमाल करें. list
अनुरोध पर permissionDetails
फ़ील्ड को फ़ेच करने के लिए, fields
पैरामीटर को permissions/permissionDetails
पर सेट करें.
इस फ़ील्ड में, उपयोगकर्ता, ग्रुप या डोमेन के लिए, फ़ाइल की सभी इनहेरिट की गई और सीधे तौर पर मिली अनुमतियां शामिल होती हैं.
एक उदाहरण दिखाएं
नीचे दिए गए कोड सैंपल में, भूमिका के सोर्स का पता लगाने का तरीका बताया गया है. रिस्पॉन्स में, permissions
संसाधन का permissionDetails
दिखता है. inheritedFrom
फ़ील्ड, उस आइटम का आईडी दिखाता है जिससे अनुमति इनहेरिट की गई है.
अनुरोध
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
?fields=permissionDetails&supportsAllDrives=true
रिस्पॉन्स
{
"permissionDetails": [
{
"permissionType": "member",
"role": "commenter",
"inheritedFrom": "INHERITED_FROM_ID
",
"inherited": true
},
{
"permissionType": "file",
"role": "writer",
"inherited": false
}
]
}
एक साथ कई अनुरोधों की मदद से, कई अनुमतियां अपडेट करना
हमारा सुझाव है कि एक से ज़्यादा अनुमतियों में बदलाव करने के लिए, एक साथ कई अनुरोध का इस्तेमाल करें.
यहां क्लाइंट लाइब्रेरी की मदद से, एक साथ कई अनुमतियों में बदलाव करने का उदाहरण दिया गया है.
Java
Python
Node.js
PHP
.NET
अनुमति मिटाना
किसी फ़ाइल या फ़ोल्डर का ऐक्सेस रद्द करने के लिए, permissions
संसाधन पर delete()
तरीके को कॉल करें. साथ ही, अनुमति मिटाने के लिए, fileId
और permissionId
पाथ पैरामीटर सेट करें.
"मेरी ड्राइव" में मौजूद आइटम के लिए, इनहेरिट की गई अनुमति को मिटाया जा सकता है. इनहेरिट की गई अनुमति मिटाने पर, उस आइटम और उसके चाइल्ड आइटम का ऐक्सेस रद्द हो जाता है.
शेयर की गई ड्राइव में मौजूद आइटम के लिए, इनहेरिट की गई अनुमतियां वापस नहीं ली जा सकतीं. इसके बजाय, पैरंट फ़ाइल या फ़ोल्डर की अनुमति को अपडेट करें या मिटाएं.
delete()
तरीके का इस्तेमाल, शेयर की गई Drive फ़ाइल या फ़ोल्डर पर सीधे लागू की गई अनुमतियों को मिटाने के लिए भी किया जाता है.
एक उदाहरण दिखाएं
यहां दिए गए कोड के सैंपल में, permissionId
को मिटाकर ऐक्सेस रद्द करने का तरीका बताया गया है. अगर एपीआई सही से जुड़ जाता है, तो जवाब का मुख्य हिस्सा खाली होता है. अनुमति हटाए जाने की पुष्टि करने के लिए, permissions
संसाधन पर fileId
पाथ पैरामीटर के साथ list()
तरीके का इस्तेमाल करें.
अनुरोध
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
फ़ाइल का ऐक्सेस सीमित करने के लिए, ऐक्सेस खत्म होने की तारीख सेट करना
किसी संवेदनशील प्रोजेक्ट पर लोगों के साथ काम करते समय, हो सकता है कि आप कुछ समय बाद Drive में मौजूद कुछ फ़ाइलों के ऐक्सेस पर पाबंदी लगाना चाहें. 'मेरी ड्राइव' में मौजूद फ़ाइलों के लिए, ऐक्सेस की समयसीमा तय की जा सकती है. इससे, उस फ़ाइल का ऐक्सेस सीमित किया जा सकता है या उसे हटाया जा सकता है.
खत्म होने की तारीख सेट करने के लिए:
permissions
संसाधन परcreate()
तरीके का इस्तेमाल करें और ज़रूरी अन्य फ़ील्ड के साथ-साथexpirationTime
फ़ील्ड सेट करें. ज़्यादा जानकारी के लिए, अनुमति बनाना लेख पढ़ें.permissions
संसाधन परupdate()
तरीके का इस्तेमाल करें औरexpirationTime
फ़ील्ड को (अन्य ज़रूरी फ़ील्ड के साथ) सेट करें. ज़्यादा जानकारी के लिए, अनुमतियों को अपडेट करना लेख पढ़ें.
expirationTime
फ़ील्ड से पता चलता है कि आरएफ़सी 3339 के मुताबिक, अनुमति कब खत्म होगी. खत्म होने के समय पर ये पाबंदियां लागू होती हैं:
- इन्हें सिर्फ़ उपयोगकर्ता और ग्रुप की अनुमतियों पर सेट किया जा सकता है.
- समय, आने वाले समय का होना चाहिए.
- यह समय, आने वाले एक साल से ज़्यादा का नहीं हो सकता.
खत्म होने की तारीख के बारे में ज़्यादा जानकारी के लिए, ये लेख पढ़ें:
मिलते-जुलते विषय
- ऐक्सेस के लिए किए गए लंबित अनुरोध मैनेज करना
- फ़ाइल का मालिकाना हक ट्रांसफ़र करना
- फ़ाइल के कॉन्टेंट को सुरक्षित करना
- रिसॉर्स कुंजियों का इस्तेमाल करके, लिंक की गई ड्राइव की फ़ाइलें ऐक्सेस करना
- भूमिकाएं और अनुमतियां