gapi.auth2无法获取access_token

时间:2016-08-03 18:36:43

标签: javascript google-client google-client-login

我正在尝试使用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 所以我更改的主要内容是使用auth2g-signin2而不是result.access_tokeng-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包含我需要的令牌
    • 但&#34; hg&#34;对我来说似乎是一个缩小的财产
    • 所以我不打算使用它,因为它可能随更新而改变
    • 编辑:正如评论中所指出的那样hg确实是一个缩小的属性,现在已不再存在
  2. 将进度事件添加到gapi.client.request()
    • 但xhr对象似乎没有暴露
  3. 使用记录为已弃用的代码
  4. 任何人都可以帮我吗?我已经在寻找一个可接受的解决方案几个小时了,我现在感觉好像在哭...一个人而且绝望。

    提前致谢, 罗伯

    PS:I've also posted this question on google groups

1 个答案:

答案 0 :(得分:0)

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