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की अनुमति है. - ट्रांसफ़र करने पर फिर से जांच की जाती है: किसी आइटम को नए पैरंट फ़ोल्डर में ट्रांसफ़र करने पर, उसकी अनुमतियों की फिर से जांच की जाती है. साथ ही, नए पैरंट फ़ोल्डर की अनुमतियां आइटम और उसके चाइल्ड फ़ोल्डर पर लागू की जाती हैं.
फ़ाइल के लिंक और ऐक्सेस कंट्रोल
किसी फ़ाइल या फ़ोल्डर को किसी उपयोगकर्ता या ग्रुप के साथ शेयर करने पर, उसे ऐक्सेस करने का यूआरएल नहीं बदलता. साथ ही, हर उपयोगकर्ता के लिए यूनीक लिंक जनरेट नहीं होता.
इसके बजाय, आइटम का एक ही लिंक होता है, जो उसके fileId के आधार पर तय होता है.
Drive, आइटम के ACL का आकलन करके ऐक्सेस को कंट्रोल करता है. जब कोई उपयोगकर्ता किसी लिंक को खोलने की कोशिश करता है, तो Drive, एसीएल के हिसाब से उसकी पुष्टि की गई पहचान की पुष्टि करता है. अगर किसी अनुमति को रद्द कर दिया जाता है या उसकी समयसीमा खत्म हो जाती है, तो उपयोगकर्ता को एसीएल से हटा दिया जाता है. अगर उपयोगकर्ता लिंक पर फिर से जाने की कोशिश करता है, तो Drive उसे ऐक्सेस करने की अनुमति नहीं देता.
फ़ाइल की क्षमताओं के बारे में जानकारी
permissions संसाधन से यह पता चलता है कि किसके पास ऐक्सेस है (एसीएल). हालांकि, इससे यह सीधे तौर पर पता नहीं चलता कि मौजूदा उपयोगकर्ता, आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में कोई खास कार्रवाई कर सकता है या नहीं.
इसके बजाय, files संसाधन में बूलियन capabilities फ़ील्ड का कलेक्शन होता है. जैसे, canComment, canShare या canDelete. Google Drive API, उपयोगकर्ता की भूमिका और आइटम की सेटिंग के आधार पर, इन फ़ील्ड की वैल्यू को डाइनैमिक तरीके से कैलकुलेट करता है.
फ़ाइल से जुड़ी सुविधाएं पाना
अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) को रेंडर करते समय, अनुमतियों को सीधे तौर पर पार्स करने के बजाय, files.capabilities की जांच करें:
fields=capabilitiesके साथfiles.getतरीके को कॉल करें. ज़्यादा जानकारी के लिए, चुनिंदा फ़ील्ड की वैल्यू वापस पाना लेख पढ़ें.- बूलियन फ़्लैग का इस्तेमाल करके, अपने इंटरफ़ेस में कार्रवाइयों को चालू या बंद करें. उदाहरण के लिए, अगर
canCommentfalseहै, तो टिप्पणी करने की सुविधा बंद करें.
Drive के संसाधन शेयर करने के उदाहरण
यहां दी गई टेबल में, अलग-अलग जगहों और आइटम टाइप के हिसाब से Drive के संसाधन शेयर करने के लिए ज़रूरी भूमिकाओं और शर्तों के बारे में बताया गया है:
| जगह | आइटम | ज़रूरी भूमिकाएं | कुंजी से जुड़ी शर्तें |
|---|---|---|---|
| मेरी ड्राइव | फ़ाइल या फ़ोल्डर | owner या writer |
अगर writersCanShare=false, तो owner ज़रूरी है.फ़ोल्डर पर सीमित समय के लिए खाते का ऐक्सेस देने के लिए, reader ज़रूरी है (ऐक्सेस खत्म होने की तारीख सेट करना लेख पढ़ें). |
| शेयर की गई ड्राइव | फ़ाइल | organizer, fileOrganizer या writer |
writersCanShare को हमेशा true माना जाता है. |
| शेयर की गई ड्राइव | फ़ोल्डर | organizer |
अगर sharingFoldersRequiresOrganizerPermission false है, तो fileOrganizer भी शेयर कर सकता है. |
| शेयर की गई ड्राइव | सदस्यता | organizer |
सिर्फ़ user या group पर लागू होता है, डोमेन पर नहीं. |
अनुमतियां प्रबंधित करें
यहां दी गई टेबल में, permissions संसाधन पर उपलब्ध तरीकों की खास जानकारी दी गई है:
| तरीका | एपीआई एंडपॉइंट | मुख्य पैरामीटर | रेफ़रंस |
|---|---|---|---|
| बनाएं | POST https://www.googleapis.com/drive/v3/files/{fileId}/permissions |
role, type, emailAddress या domain |
permissions.create |
| पाएं | GET https://www.googleapis.com/drive/v3/files/{fileId}/permissions/{permissionId} |
fields |
permissions.get |
| सूची | GET https://www.googleapis.com/drive/v3/files/{fileId}/permissions |
pageSize, supportsAllDrives, pageToken |
permissions.list |
| अपडेट करें | PATCH https://www.googleapis.com/drive/v3/files/{fileId}/permissions/{permissionId} |
role, allowFileDiscovery |
permissions.update |
| मिटाएं | DELETE https://www.googleapis.com/drive/v3/files/{fileId}/permissions/{permissionId} |
supportsAllDrives |
permissions.delete |
अनुमति बनाना
किसी फ़ाइल, फ़ोल्डर या शेयर की गई ड्राइव को शेयर करने के लिए, permissions संसाधन पर create तरीके को fileId के साथ कॉल करें.
अनुमति बनाने पर, आइटम में एक नई ACL एंट्री जुड़ जाती है. साथ ही, असाइन किया गया permissionId दिखता है.
अनुरोध के मुख्य हिस्से में, ये फ़ील्ड शामिल करें:
role: ऐक्सेस का वह लेवल जो देना है. उदाहरण के लिए,reader,commenterयाwriter. पूरी सूची देखने के लिए, भूमिकाएं और अनुमतियां देखें.type: यह, अनुमति पाने वाले व्यक्ति या कंपनी (user,group,domainयाanyone) के स्कोप के बारे में बताता है.- अनुदान पाने वाले का आइडेंटिफ़ायर (
typeके आधार पर ज़रूरी है):emailAddress: जबtypeकी वैल्यूuserयाgroupपर सेट हो, तब यह एट्रिब्यूट ज़रूरी होता है.domain:typeकी वैल्यूdomainहोने पर, यह एट्रिब्यूट ज़रूरी है.
यहां दिए गए कोड के सैंपल में, अनुमति बनाने का तरीका बताया गया है. जवाब में, असाइन किए गए permissionId के साथ-साथ permissions संसाधन का एक इंस्टेंस दिखता है.
अनुरोध
POST https://www.googleapis.com/drive/v3/files/FILE_ID/permissions{ "role": "commenter", "type": "user", "emailAddress": "alex@altostrat.com" }
जवाब
{
"kind": "drive#permission",
"id": "PERMISSION_ID",
"type": "user",
"role": "commenter"
}टारगेट ऑडियंस के साथ शेयर करना
टारगेट ऑडियंस, लोगों के ऐसे ग्रुप होते हैं जिनके साथ उपयोगकर्ता अपने आइटम शेयर कर सकते हैं. जैसे, डिपार्टमेंट या टीमें. उपयोगकर्ताओं को पूरे संगठन के बजाय, किसी खास या सीमित ऑडियंस के साथ आइटम शेयर करने के लिए बढ़ावा दिया जा सकता है. टारगेट ऑडियंस की मदद से, अपने डेटा की सुरक्षा और निजता को बेहतर बनाया जा सकता है. साथ ही, उपयोगकर्ताओं के लिए डेटा को सही तरीके से शेयर करना आसान बनाया जा सकता है.
टारगेट ऑडियंस के साथ शेयर करने के लिए, type=domain को सेट करें और domain को <TARGET_AUDIENCE_ID>.audience.googledomains.com पर सेट करें. Google Admin console में टारगेट ऑडियंस ढूंढने या बनाने के बारे में जानकारी के लिए, टारगेट ऑडियंस के बारे में जानकारी लेख पढ़ें.
यह देखने के लिए कि उपयोगकर्ता, टारगेट ऑडियंस के साथ कैसे इंटरैक्ट करते हैं, लिंक शेयर करने के लिए उपयोगकर्ता अनुभव देखें.
अनुमति पाना
अनुमति पाने के लिए, permissions संसाधन पर get तरीके को कॉल करें. इसके लिए, fileId और permissionId पाथ पैरामीटर का इस्तेमाल करें. अगर आपको अनुमति का आईडी नहीं पता है, तो पहले सभी अनुमतियों की सूची बनाएं.
अनुमतियों की सूची
किसी फ़ाइल, फ़ोल्डर या शेयर की गई ड्राइव के लिए अनुमतियों की सूची बनाने के लिए, permissions रिसॉर्स पर list तरीके को कॉल करें. इसके लिए, ज़रूरी fileId पाथ पैरामीटर का इस्तेमाल करें.
जवाब को पेज के हिसाब से बांटने या फ़िल्टर करने के लिए, इनमें से कोई भी वैकल्पिक क्वेरी पैरामीटर शामिल किया जा सकता है:
pageSize(ज़रूरी नहीं): हर पेज के लिए, अनुमतियों की ज़्यादा से ज़्यादा संख्या. अगर शेयर की गई ड्राइव में मौजूद फ़ाइलों के लिए यह सेटिंग सेट नहीं की गई है, तो ज़्यादा से ज़्यादा 100 नतीजे दिखाए जाते हैं. अगर शेयर की गई ड्राइव में मौजूद फ़ाइलों के लिए यह सेटिंग सेट नहीं की गई है, तो पूरी सूची दिखाई जाती है.pageToken(ज़रूरी नहीं): यह पिछली सूची के कॉल का पेज टोकन होता है. इसका इस्तेमाल, अगले पेज को वापस पाने के लिए किया जाता है.supportsAllDrives(ज़रूरी नहीं): अनुरोध करने वाला ऐप्लिकेशन, 'मेरी ड्राइव' और शेयर की गई ड्राइव, दोनों के साथ काम करता है या नहीं.useDomainAdminAccess(ज़रूरी नहीं): डोमेन एडमिन के तौर पर अनुरोध करने के लिए, इसेtrueपर सेट करें. अगर अनुरोध करने वाला व्यक्ति, उस डोमेन का एडमिन है जिससे शेयर की गई ड्राइव जुड़ी है औरfileIdपैरामीटर, शेयर की गई ड्राइव को रेफ़र करता है, तो अनुरोध करने वाले व्यक्ति को ऐक्सेस दिया जाता है. ज़्यादा जानकारी के लिए, डोमेन एडमिन के तौर पर शेयर की गई ड्राइव मैनेज करना लेख पढ़ें.includePermissionsForView(ज़रूरी नहीं): जवाब में शामिल करने के लिए, व्यू की अतिरिक्त अनुमतियां. सिर्फ़publishedका इस्तेमाल किया जा सकता है.fields(ज़रूरी नहीं): जवाब में दिखाने के लिए फ़ील्ड. डिफ़ॉल्ट रूप से,listसिर्फ़id,type,kind, औरroleदिखाता है.permissionDetailsजैसे अतिरिक्त फ़ील्ड वापस पाने के लिए, इस पैरामीटर का इस्तेमाल करके उन्हें तय करें. ज़्यादा जानकारी के लिए, चुनिंदा फ़ील्ड की वैल्यू वापस पाना लेख पढ़ें.
भूमिका के सोर्स का पता लगाना
किसी फ़ाइल या फ़ोल्डर के लिए भूमिका बदलने के लिए, आपको भूमिका के सोर्स के बारे में पता होना चाहिए. शेयर की गई ड्राइव के लिए, किसी भूमिका का सोर्स, शेयर की गई ड्राइव की सदस्यता, फ़ोल्डर की भूमिका या फ़ाइल की भूमिका के आधार पर तय किया जा सकता है.
शेयर की गई ड्राइव या उस ड्राइव में मौजूद आइटम के लिए भूमिका का सोर्स तय करने के लिए, permissions संसाधन पर get तरीके को कॉल करें. इसके लिए, fileId और permissionId पाथ पैरामीटर का इस्तेमाल करें. साथ ही, 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
}
]
}अनुमति अपडेट करना
किसी फ़ाइल या फ़ोल्डर की अनुमतियां अपडेट करने के लिए, असाइन की गई भूमिका बदली जा सकती है. भूमिका के सोर्स का पता लगाने के बारे में ज़्यादा जानने के लिए, भूमिका के सोर्स का पता लगाना लेख पढ़ें.
permissionsसंसाधन परupdateतरीके को कॉल करें. इसके लिए,fileIdपाथ पैरामीटर को उससे जुड़ी फ़ाइल, फ़ोल्डर या शेयर की गई ड्राइव पर सेट करें. साथ ही,permissionIdपाथ पैरामीटर को बदलने की अनुमति पर सेट करें.permissionIdको ढूंढने के लिए,fileIdपाथ पैरामीटर के साथpermissionsरिसॉर्स परlistतरीके का इस्तेमाल करें.अनुरोध में, नए
roleकी पहचान करें.
किसी उपयोगकर्ता या ग्रुप के पास पहले से ही शेयर की गई ड्राइव का ऐक्सेस होने पर भी, उसे शेयर की गई ड्राइव में मौजूद किसी फ़ाइल या फ़ोल्डर का ऐक्सेस दिया जा सकता है. उदाहरण के लिए, ऐलेक्स के पास शेयर की गई ड्राइव की सदस्यता के तौर पर role=commenter है. हालांकि, आपका ऐप्लिकेशन, शेयर की गई ड्राइव में मौजूद किसी फ़ाइल के लिए Alex
role=writer को अनुमति दे सकता है. इस मामले में, नई भूमिका में सदस्यता के ज़रिए मिली भूमिका की तुलना में ज़्यादा अनुमतियां हैं. इसलिए, फ़ाइल या फ़ोल्डर के लिए नई भूमिका, लागू होने वाली भूमिका बन जाती है.
पैच सिमैंटिक के ज़रिए अपडेट लागू किए जा सकते हैं. इसका मतलब है कि किसी संसाधन में कुछ बदलाव किए जा सकते हैं. आपको उन फ़ील्ड को साफ़ तौर पर सेट करना होगा जिनमें आपको अपने अनुरोध में बदलाव करना है. अनुरोध में शामिल नहीं किए गए फ़ील्ड की मौजूदा वैल्यू बनी रहती हैं. ज़्यादा जानकारी के लिए, आंशिक संसाधनों के साथ काम करना लेख पढ़ें.
भूमिकाएं बदलने के साथ-साथ, किसी आइटम के दिखने की सेटिंग में भी बदलाव किया जा सकता है. ऐसा तब किया जा सकता है, जब अनुमति type या domain या anyone हो. शेयर की गई किसी फ़ाइल को खोजे जाने या 'सबके लिए मौजूद नहीं' के तौर पर सेट करने के लिए, अपने पैच अनुरोध में allowFileDiscovery बूलियन फ़ील्ड शामिल करें. इस विकल्प को true पर सेट करने से, आइटम को टारगेट की गई ऑडियंस के लिए खोज के नतीजों में दिखने की अनुमति मिलती है. भले ही, उन्हें सीधे तौर पर लिंक न दिया गया हो. इस सेटिंग को बदलने के लिए, आपको अनुमति को मिटाने और फिर से बनाने की ज़रूरत नहीं है.
यहां दिए गए कोड के सैंपल में, किसी फ़ाइल या फ़ोल्डर की अनुमतियों को commenter से writer में बदलने का तरीका बताया गया है. जवाब में, permissions संसाधन का एक इंस्टेंस मिलता है.
अनुरोध
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID
{
"role": "writer"
}जवाब
{
"kind": "drive#permission",
"id": "PERMISSION_ID",
"type": "user",
"role": "writer"
}एक साथ कई अनुरोध करके, एक से ज़्यादा अनुमतियां अपडेट करना
एक ही फ़ाइल, फ़ोल्डर या शेयर की गई ड्राइव के लिए, एक साथ अनुमतियों में बदलाव करने की सुविधा उपलब्ध नहीं है. यह सीमा, सभी म्यूटेटिंग कार्रवाइयों (जैसे कि अपडेट या मिटाना) पर लागू होती है. इससे कोई फ़र्क़ नहीं पड़ता कि एक ही व्यक्ति या अलग-अलग लोगों के लिए अनुमतियों में बदलाव किया जा रहा है. साथ ही, इससे भी कोई फ़र्क़ नहीं पड़ता कि अनुरोध किसी एक ऐप्लिकेशन से किया जा रहा है या कई उपयोगकर्ताओं से.
Drive, किसी आइटम के लिए अनुमतियों का आकलन करता है और उन्हें एक ही एसीएल के तौर पर अपडेट करता है. एक साथ कई कार्रवाइयां करने से, रेस कंडीशन पैदा होती हैं. इनमें "आखिरी बार किए गए बदलाव लागू होते हैं."
इससे अनुमति में किए गए बदलाव चुपचाप बदल सकते हैं या sharingRateLimitExceeded
गड़बड़ियां ट्रिगर हो सकती हैं.
अनुमतियों में टकराव से बचने के लिए, एक ही आइटम की अनुमतियों में एक के बाद एक बदलाव करें. इसके अलावा, एक ही अनुरोध में कई अनुमतियों में बदलाव करने के लिए, बैच अनुरोधों का इस्तेमाल करें.
यहां क्लाइंट लाइब्रेरी की मदद से, अनुमति में एक साथ कई बदलाव करने का उदाहरण दिया गया है.
Java
Python
Node.js
PHP
.NET
अनुमति मिटाना
किसी फ़ाइल या फ़ोल्डर का ऐक्सेस रद्द करने के लिए, fileId और permissionId पाथ पैरामीटर के साथ permissions संसाधन पर delete तरीके को कॉल करें.
इनहेरिट की गई अनुमतियों को सीधे तौर पर चाइल्ड आइटम से नहीं हटाया जा सकता. इसके बजाय, पैरंट फ़ोल्डर की अनुमति अपडेट करें या मिटाएं. इसके अलावा, सीमित ऐक्सेस की सेटिंग का इस्तेमाल करें.
ध्यान दें कि किसी उपयोगकर्ता का ऐक्सेस पैरंट आइटम से हटाने पर, सिर्फ़ उस पैरंट आइटम से मिली अनुमतियां रद्द होती हैं. अगर उपयोगकर्ता को किसी चाइल्ड आइटम पर सीधे तौर पर अनुमतियां दी गई थीं, तो वह सीधे तौर पर ऐक्सेस कर सकता है. किसी अनुमति को हटाए जाने की पुष्टि करने के लिए, fileId के साथ list को कॉल करें.
ऐक्सेस खत्म होने की तारीख सेट करना
किसी फ़ाइल या फ़ोल्डर का कुछ समय के लिए ऐक्सेस देने के लिए, create या update तरीके कॉल करते समय, expirationTime फ़ील्ड (RFC 3339 तारीख-समय) सेट करें.
एक्सपायर होने के समय से जुड़ी ये पाबंदियां लागू होती हैं:
- इसे सिर्फ़
userऔरgroupअनुमतियों के लिए सेट किया जा सकता है.domainयाanyoneके लिए नहीं. - समय, अभी से आगे का होना चाहिए. यह ज़्यादा से ज़्यादा एक साल तक का हो सकता है.
- फ़ोल्डर के लिए, कुछ समय के लिए ऐक्सेस देने की सुविधा सिर्फ़
readerभूमिका के साथ काम करती है.
मिलते-जुलते विषय
- ऐक्सेस के लंबित अनुरोध मैनेज करना
- सीमित और ज़्यादा ऐक्सेस वाले फ़ोल्डर मैनेज करना
- फ़ाइल का मालिकाना हक ट्रांसफ़र करना
- फ़ाइल के कॉन्टेंट को सुरक्षित रखना
- संसाधन कुंजियों का इस्तेमाल करके, लिंक शेयर करके Drive की गई फ़ाइलों को ऐक्सेस करना
- भूमिकाएं और अनुमतियां