使用Google云端硬盘网络界面,我右键点击文件,选择“共享”,即可进入“共享设置”。我将文件设置为“在网络上公开 - 互联网上的任何人都可以查找和查看”。
然后我复制“链接到共享”,在这种情况下它是: https://docs.google.com/open?id=0B6Cpn8NXwgGPbFBPMEh5VHc1cUU
然后我点击“完成”。
如果我打开其他浏览器,没有Cookie,并尝试访问该链接,我会被重定向到Google的登录页面。我假设此设置意味着无需身份验证即可查看该文件。这是预期的行为吗?
我正在尝试通过API执行相同的操作,并且在将权限设置为public,将“everyone”设置为“reader”并使用webContentLink值作为文件时,我没有获得预期的结果发布的网址。同样在这种情况下,如果我在未登录Google Apps时转到该链接,我会被重定向到登录。
我使用以下方法调用以下方法来设置权限:
thePermission = insert_permission(userNickName,file['id'],"me","anyone","reader")
方法:
def insert_permission(userNickName,file_id, value, perm_type, role):
credentials = get_stored_credentials(userNickName)
service = CreateDrive(credentials)
if service is None:
return
"""Insert a new permission.
Args:
service: Drive API service instance.
file_id: ID of the file to insert permission for.
value: User or group e-mail address, domain name or None for 'default'
type.
perm_type: The value 'user', 'group', 'domain' or 'default'.
role: The value 'owner', 'writer' or 'reader'.
Returns:
The inserted permission if successful, None otherwise.
"""
new_permission = {
'value': value,
'type': perm_type,
'role': role
}
try:
return service.permissions().insert(
fileId=file_id, body=new_permission).execute()
except errors.HttpError, error:
print 'An error occurred: %s' % error
return None
我主要在这个问题上询问UI界面,因为看起来我期望使用谷歌所做的正确结果似乎更简单。
答案 0 :(得分:2)
我终于在我的案例中找到了问题。我的GAE应用程序使用“联合登录”进行“身份验证选项”,而不是“Google帐户API”。一切都适用于Google Drive API。我可以使用Oauth登录来放置文件,删除,移动,命名。但是一段时间以来,我一直无法通过我的GAE应用程序从Google云端硬盘公开共享文件。如果在未登录Google Apps的情况下尝试查看这些文件,系统会始终提示我登录。
我决定放弃Oauth登录GAE并使用Google帐户登录,因为使用该应用的所有人现在都需要使用Google云端硬盘。将仪表板中的GAE应用程序从“联合”切换为“Google帐户”后,我很乐意在不需要任何登录的情况下向公众共享文件。
因此,Google Drive似乎还没有完全支持GAE的“联合登录”,因为“联合登录”显示为实验性的,所以几乎没有什么可抱怨的。