如何从Google Drive REST Api V3 Android获取直接下载URL
此问题的确与主题上的其他问题类似,但从未正确回答
在Google Drive REST api V2中,从GET请求返回了一个下载网址,即返回了一个Google驱动器文件。
File file = mGOOSvc.files().get(fileId).execute();
和直接下载网址来自
String link = file.getDownloadUrl() + "&access_token=" + getAccessToken(mContext) + "alt=media";
[这在今年早些时候停止了工作(由于某种原因?),我收到了错误403,所以我迁移到了适用于Android V3的Google Drive Rest Api。
我需要在Exoplayer中使用直接访问URL,以便直接流式传输内容(不是输入流,我可以得到这个)我无法理解如何获取该内容以及为什么它不起作用...
从文档中,我不确定访问令牌现在是否需要添加到请求标头中:https://cloud.google.com/blog/products/application-development/upcoming-changes-to-the-google-drive-api-and-google-picker-api
迁移指南还指出,V2中的downloadUrl成为files.get,使用?alt = media没有提供示例https://developers.google.com/drive/api/v2/v2-to-v3-reference
我已将范围添加到GoogleAccountCredential(用于登录并创建Drive Client)和Google开发人员控制台中,并且还在Google Developers Console中创建了OAuth客户端。
DriveScopes.DRIVE_FILE,
DriveScopes.DRIVE_APPDATA,
DriveScopes.DRIVE
我尝试了各种各样的方法似乎都没有效果.....
fun getDownloadUrl(mId: String, mContext: Context): String? {
val get = service?.files()?.get(mId)
get?.fields = "*"
val headers = HttpHeaders()
headers.authorization = getOAuth2Token(mContext)
get?.requestHeaders = headers
get?.oauthToken = getOAuth2Token(mContext)
get?.alt = "media"
val request = get?.buildHttpRequest()?.url
Log.d(TAG, "REQUEST 1 $request")
Log.d(TAG, "REQUEST 2 $request?alt=media")
val executeMedia = get?.mediaHttpDownloader?.setDirectDownloadEnabled(true)
val mDriveFile = get?.execute()
val test = get?.executeMedia()
Log.d(TAG, "TEST ${test?.request?.url}")
Log.d(TAG, "FILE ${mDriveFile?.toPrettyString()}")
val url = mDriveFile?.webContentLink + "?alt=media"
val url = mDriveFile?.webContentLink
Log.d(TAG, "URL $url")
return url
}
下载,读取,创建和删除方法都可以正常工作,但是我需要直接链接如果有人可以帮助
“&access_token =”不再起作用。相反,您需要像这样在HTTP标头中发送访问令牌:
Authorization = "Bearer <access_token>"