更新2:我重新审视了这个问题,并通过仔细遵循下面链接的doco解决了这个问题.但首先,对于那些正在努力解决这个问题的人来说,你们的团结良好.谷歌有很多版本的doco令人困惑!你在html中包含了platform.js或client.js吗?你加载gapi.auth或gapi.auth2?你使用gapi.auth2.render或gapi.auth.authorize,还是gapi.auth2.init等等.
返回access_token的方式(截至本文日期)在下面链接.我设法通过使用platform.js仔细遵循指南和参考来实现这一点.然后使用gapi.load('drive',callback)动态加载其他库,例如client.js.
https://developers.google.com/identity/sign-in/web/listeners https://developers.google.com/identity/sign-in/web/reference
====繁荣的原始问题====
更新1: 我已更新代码示例以对googleUser对象进行递归搜索.至少这不应该在随后的库中中断.
下面是一个代码片段,用于处理Google gapi.auth2.AuthResponse对象中的access_token不在顶层的问题...它被隐藏:(在对象的深处!
所以它是可以检索的,但不是顶级的!! 我注意到它似乎是一个计时问题...一旦应用程序在后续检查中运行了一段时间,它确实包含顶级访问令牌!
var authResponse = _.googleUser.getAuthResponse();
_.id_token = authResponse.id_token; // Always exists
// access_token should also be a param of authResponse
if (authResponse.access_token) {
debug("Worked this time?");
_.access_token = authResponse.access_token;
} else {
// !!! Internal object access !!!
debug("Attempt to get access token from base object.");
_.access_token = _.objRecursiveSearch("access_token", _.googleUser);
if (_.access_token) {
debug("Access token wasn't on authResponse but was on the base object, WTF?");
} else {
debug("Unable …Run Code Online (Sandbox Code Playgroud)