1

我正在开发一个移动网络应用程序,它将访问 Google Books API 并允许用户将书籍添加到他们的“收藏夹”书架中。这是我第一次使用需要 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 按钮变为“已登录”。我只是想从那里记录访问令牌:

` 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?

4

2 回答 2

7

已经很晚了,但是如果您将 true 参数传递给 getAuthResponse“getAuthResponse(true)”,它将返回 access_token。

于 2017-09-25T11:41:40.457 回答
1

尝试gapi.authAPI 客户端库中使用,而不是gapi.auth2在识别平台中使用。您应该找到gapi.auth.getToken().access_token包含您需要的访问令牌。


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

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


如果您在请求标头中包含 response_type 作为“令牌”,它将返回带有 currentUser 的 access_token

于 2016-04-13T20:55:31.230 回答