Google Drive REST Android API V3直接下载网址

问题描述 投票:0回答:1

如何从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
}

下载,读取,创建和删除方法都可以正常工作,但是我需要直接链接如果有人可以帮助

android google-drive-api
1个回答
0
投票
请求中的

“&access_token =”不再起作用。相反,您需要像这样在HTTP标头中发送访问令牌:

Authorization = "Bearer <access_token>"
© www.soinside.com 2019 - 2024. All rights reserved.