如何通过Google JavaScript oauth2 API获取访问令牌

7

http://api.chan15.info/google-stackoverflow.html

这是我使用Google JavaScript API让用户登录的示例代码,它可以正常工作。下一步是使用用户ID通过PHP登录到本地服务器,但是使用JavaScript获取用户ID非常危险,我想要的真正过程是:
  1. 通过JavaScript API登录用户
  2. 从JavaScript获取access_token
  3. 将access token传递给PHP
  4. 使用access token通过Google OAuth再次通过PHP获取用户ID
  5. 使用用户ID登录用户
但我不知道如何获取access token。

Google登录API应该重定向到您选择的页面,在那里您将在服务器端获取令牌,然后使用令牌等获取数据。 - adeneo
JavaScript API似乎无法完成重定向工作。 - Chan
如果您进行混合登录,则可以使用它 -> https://developers.google.com/+/web/signin/server-side-flow - adeneo
问题是,我的公司正在使用PHP 5.1,而Google PHP SDK需要PHP 5.2+,这就是为什么我需要以这种方式进行登录的原因。 - Chan
等一下,这是不是意味着我不能使用访问令牌并像Facebook图形API那样自己获取信息? - Chan
请检查这个答案 http://stackoverflow.com/a/38094113/1153703 - Bikesh M
1个回答

5
用户使用Javascript Oauth2 API登录他们的Google帐户后,可以在此处找到访问令牌:
gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().access_token;
我已经使用这个令牌将其传递给单独的curl PHP请求以及CORS。由于Google的JS API仍处于测试阶段,所以过去我不得不采用发送PHP curl请求的方法。如果您打算在用户导航到其他页面后存储令牌以供访问,我还会获取令牌到期日期并调用另一个函数,在过期或明确撤销时清除存储的令牌。但对我来说,每次成功登录后立即提取这个令牌更容易,因为我只需要一次调用PHP函数,并实时与AJAX一起作为临时解决方案。
PS:您可能想将原始类别从Java更改为Javascript

1
如果您的回答还包含一些解释性的词语,那么它会更好。 - mkl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接