能否通过Google Drive API使用OAuth2 Subject而非邮箱地址分享文件?
能否通过Google Drive API使用OAuth2 Subject而非邮箱地址分享文件?
嗨,根据你遇到的情况以及Google Drive API的官方规则,很遗憾地告诉你——你没办法直接用OAuth2返回的subject来分享文件给用户。
Google Drive API的权限管理逻辑里明确规定了:
当你创建type=user或type=group的权限时,必须提供emailAddress来关联具体的用户或群组。
简单来说,Drive的分享系统是基于用户的邮箱(或者说与Google账号绑定的邮箱身份)来识别接收者的,而OAuth2返回的subject只是授权流程里用来唯一标识用户的内部ID,并没有和Drive的权限体系打通,所以没法直接用它来指定分享对象。
那你现在有两个可行的解决方向:
- 调整OAuth授权流程,添加
https://www.googleapis.com/auth/userinfo.email这个权限范围,这样在用户登录时就能获取到他们的邮箱地址,后续创建分享权限时直接用这个邮箱就可以了。 - 如果不想一开始就请求邮箱权限,也可以在用户登录后,单独引导他们输入自己的邮箱地址,再用这个输入的邮箱来设置文件分享。不过这种方式需要额外处理用户输入错误的情况,体验上不如直接通过OAuth获取来得顺畅。
备注:内容来源于stack exchange,提问作者Ralph Sleigh




