Google access_token 未定义

Google access_token is undefined

我正在开发一个移动网络应用程序,它将访问 Google 图书 API 并允许用户将图书添加到他们的 "favorites" 书架。这是我第一次使用需要 Google 授权的 API。

我需要发送授权请求来修改私人用户数据。我(认为)我有合适的 access_token 但我不知道如何得到它。

我正在使用 Google 登录按钮,如下所示:

` <div class="g-signin2" data-onsuccess="onSignIn"></div> `

我也有这个来识别我的申请Google:

`<meta name="google-signin-client_id" content="12345.apps.googleusercontent.com"> `

我使用自己的 Google 帐户登录,Google 按钮变为 "Signed In." 我只是想从那里记录访问令牌:

` function onSignIn(googleUser) {
  googly = gapi.auth2.getAuthInstance();
  var id_token = googly.currentUser.get().getAuthResponse().access_token; 
  console.log(id_token); 
} `

我已经尝试了我能在文档中找到的所有内容,但无论我做什么,我都会返回 access_token 未定义。

我怀疑我实际上没有访问令牌,但我不知道如何测试它。

找到 access_token 的正确方法是什么?一旦我有了它,我该如何将它发送到 API?

尝试在 API Client Library 中使用 gapi.auth 而不是识别平台中的 gapi.auth2。您应该会发现 gapi.auth.getToken().access_token 包含您需要的访问令牌。


也就是说,我认为这是一个错误。如果你 alert(JSON.stringify(googleUser)) 我怀疑你会发现那里有一个 access_token 字段,但 getAuthResponse() 不包含它,即使 docs 建议应该有一.

如果有人能确认我理解正确并报告,那就太好了。


如果您在请求 header 中将 response_type 作为 'token' 包含,它将 return access_token 与 currentUser

太晚了,但如果您将 true 参数传递给 getAuthResponse "getAuthResponse(true)" 它 returns access_token.