3

我正在尝试使用 javascript 客户端 API 为 youtube 实现可恢复上传。我已经设法使用g-signin2按钮使登录工作,但我无法让 access_token 与请求一起发送。这就是我呈现登录按钮的方式:

<span
  class="g-signin2"
  data-onsuccess="youtubeUploaderSigninCallback"
  data-scope="https://www.googleapis.com/auth/youtube.upload https://www.googleapis.com/auth/youtube">
</span>

而且我正在使用从谷歌加载的以下脚本文件(我似乎无法让一个没有另一个工作)

<script src="https://apis.google.com/js/platform.js" async defer></script>
<script src="https://apis.google.com/js/client.js" async defer></script>

我正在使用来自https://developers.google.com/youtube/v3/code_samples/javascript#upload_video的代码编辑示例使用 XHR 进行可恢复上传。但是这些示例使用此处标记为已弃用的身份验证函数:https ://developers.google.com/api-client-library/javascript/reference/referencedocs 所以我更改的主要内容是使用auth2andg-signin2而不是result.access_tokenand g-signin

所以我一直在尝试使用这些auth2函数来获取访问令牌,但是access_token当我执行以下代码时该属性未定义

gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse()

我试图获取访问令牌的方式记录在这里:https ://developers.google.com/api-client-library/javascript/features/cors#making-authenticated-requests

所以这些是我的选择,我猜:

  1. 找到一种从用户对象中获取访问令牌的方法
    • (我发现 user.hg.access_token 包含我需要的令牌
    • 但“hg”对我来说似乎是一个缩小的属性
    • 所以我不打算使用它,因为它可能会随着更新而改变
    • 编辑:正如评论中指出的那样,hg确实是一个缩小的属性,现在不再存在
  2. 将进度事件添加到 gapi.client.request()
    • 但 xhr 对象似乎没有暴露
  3. 使用记录为已弃用的代码

谁能帮我这个?几个小时以来,我一直在寻找一个可以接受的解决方案,我现在想哭……孤身一人,绝望。

在此先感谢,罗伯

PS:我也在谷歌群组上发布了这个问题

4

1 回答 1

11
gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().access_token
于 2018-06-14T19:17:21.313 回答