2015-10-20 33 views
1

我希望有人可以提供幫助。我使用PyDrive進行身份驗證並將文件上傳到我的Google雲端硬盤中,沒有任何問題。然後,我嘗試更改相同文件的權限以允許通過更新其元數據進行共享。使用PyDrive元數據不會更改文件權限

drive = GoogleDrive(gauth) 

file1 = drive.CreateFile({'title': fName, 'shareable':True, 
     'userPermission': [{'kind':'drive#permission', 'type': 'anyone', 
     'value': 'anyone','role': 'reader'}]}) 
file1.SetContentFile(fName) 

但是,當我印刷userPermission時,它似乎沒有按照我的意圖設置權限。

userPermission = file1['userPermission'] 
pprint.pprint(userPermission) 

我得到:

{u'etag': u'"pvTNHKA6KkAgXTpZXMwU4Pa7ELo/gZDvZYCYVjI-u0hbut2HQwdCArU"', 
u'id': u'me', 
u'kind': u'drive#permission', 
u'role': u'owner', 
u'selfLink': u'https://www.googleapis.com/drive/v2/files/0B1aI5mMxQzh3MktDMWl1ZFdOZw0/permissions/me', 
u'type': u'user' 
} 

我不知道爲什麼權限被設置正確。我沒有收到任何類型的錯誤。如何在userPermission中設置變量有什麼問題嗎?謝謝你的幫助。

+0

我有同樣的問題! – wu4m4n

回答

0

我不確定您是否可以在文件創建期間設置權限。另外我不確定您是否可以修改userPermission。但你可以做的是修改permissions列表InsertPermission

下面你會發現一個如何添加共享權限的例子。我認爲下面的代碼是不言自明的。

from pydrive.auth import GoogleAuth 
from pydrive.drive import GoogleDrive 

def get_drive_handle(): 
    gauth = GoogleAuth() 
    gauth.LocalWebserverAuth() 
    drive = GoogleDrive(gauth) 
    return drive 

def main(): 
    drive = get_drive_handle() 

    # create an example file 
    file = drive.CreateFile({ 
     'title': 'example.txt' 
     ,'mimeType': 'text/plain' 
    }) 
    file.Upload() 

    # original permissions 
    file.FetchMetadata(fields='permissions') 
    print('-' * 10); 
    print(file['permissions']) 

    # insert new permission 
    permission = file.InsertPermission({ 
     'type': 'anyone' 
     ,'value': 'anyone' 
     ,'role': 'reader' 
    }) 

    # new permission created above 
    print('-' * 10); 
    print(permission) 

    # all permissions 
    file.FetchMetadata(fields='permissions') 
    print('-' * 10); 
    print(file['permissions'])  

if __name__ == '__main__': 
    main() 

$ python -V 
Python 3.4.3 
$ python so.py 
---------- 
[{'photoLink': 'https://lh4.googleusercontent.com/-KhPJ2d6XQY4/AAAAAAAAAAI/AAAAAAAAAAA/JCJdY_mh4PA/s64/photo.jpg', 'role': 'owner', 'domain': 'stackoverflow.com', 'kind': 'drive#permission', 'emailAddress': '[email protected]', 'name': 'user272735', 'type': 'user', 'etag': '"_x2BG98d9xdLfiLb2EI-wbdIricX8/9AA4fWf3tZymo0DbdDmcl8WsxSY"', 'id': '1720734118151459308', 'selfLink': 'https://www.googleapis.com/drive/v2/files/0ByHjqvhF6xU8XGJLOUREVUVSWE0/permissions/1720734118151459308'}] 
---------- 
{'withLink': False, 'type': 'anyone', 'role': 'reader', 'kind': 'drive#permission', 'etag': '"_x2BEY9xkGriLb2EI-wbdIricX8/HCM4BvjWTJ3XhPBw3h0wgA7Cruo"', 'id': 'anyone', 'selfLink': 'https://www.googleapis.com/drive/v2/files/0ByHjqvhF6xU8XGJLOUREVUVSWE0/permissions/anyone'} 
---------- 
[{'photoLink': 'https://lh4.googleusercontent.com/-KhPJ2d6XQY4/AAAAAAAAAAI/AAAAAAAAAAA/JCJdY_mh4PA/s64/photo.jpg', 'role': 'owner', 'domain': 'stackoverflow.com', 'kind': 'drive#permission', 'emailAddress': '[email protected]', 'name': 'user272735', 'type': 'user', 'etag': '"_x2BG98d9xdLfiLb2EI-wbdIricX8/9AA4fWf3tZymo0DbdDmcl8WsxSY"', 'id': '1720734118151459308', 'selfLink': 'https://www.googleapis.com/drive/v2/files/0ByHjqvhF6xU8XGJLOUREVUVSWE0/permissions/1720734118151459308'}, 
{'withLink': False, 'type': 'anyone', 'role': 'reader', 'kind': 'drive#permission', 'etag': '"_x2BEY9xkGriLb2EI-wbdIricX8/HCM4BvjWTJ3XhPBw3h0wgA7Cruo"', 'id': 'anyone', 'selfLink': 'https://www.googleapis.com/drive/v2/files/0ByHjqvhF6xU8XGJLOUREVUVSWE0/permissions/anyone'}]