Google Drive REST Android API V3直接下载Url



如何从Google Drive REST Api V3 Android直接下载URL

这个问题确实与其他问题相似,但从未正确回答

在Google Drive REST api V2中,从返回Google驱动器文件(即(的GET请求中获得下载url

File file = mGOOSvc.files().get(fileId).execute();

以及的直接下载url

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 with?alt=媒体未提供示例https://developers.google.com/drive/api/v2/v2-to-v3-reference

我已经将作用域添加到GoogleAccountCredential(登录并创建驱动器客户端(和谷歌开发者控制台中,我还在谷歌开发者控制台创建了一个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>"

最新更新