Php 谷歌登录验证谷歌ID

Php 谷歌登录验证谷歌ID,php,google-oauth,Php,Google Oauth,我正在尝试将谷歌登录合并到一个网页。我遵循了文档,正在使用以下脚本: function onSignIn(googleUser) { var id_token = googleUser.getAuthResponse().id_token; var xhr = new XMLHttpRequest(); xhr.open('POST', 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token='+id_token); xhr.setRe

我正在尝试将谷歌登录合并到一个网页。我遵循了文档,正在使用以下脚本:

function onSignIn(googleUser) {
var id_token = googleUser.getAuthResponse().id_token; 
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token='+id_token);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function() {
  console.log('Signed in as: ' + xhr.responseText);
};
xhr.send('idtoken=' + id_token);
}
不过,我不太明白下一点——我可以看到responseText对象,但我该如何处理它呢?我只想验证该用户是否来自我们的工作,即是否有来自我们域的电子邮件地址(这是一个google apps for work gmail)。一旦它被验证,我想在不同的API上发布一篇php文章,但是我想在后端进行的任何检查对我来说都是非常容易欺骗的。我看到有用于验证令牌的php库,但我也不知道该如何处理它。谁能给我一个指针吗

[编辑:下面添加的信息]

因此,我得到的响应是这样的JSON对象(有意义的值替换为随机字符串):

现在,据我所知,我仍然需要检查aud声明是否包含我的应用程序的一个客户端ID,我还可以检查托管域(这里的hd密钥)是否与我们的域匹配

因此,问题变成了:如果我通过ajax将JSON对象发送到php页面,然后将对象中的字符串与我从开发人员控制台获得的字符串进行比较——我猜是使用
strcmp()
——这就是我需要做的全部工作吗?如果它们匹配,做我想做的事情(调用其他API,等等)


对不起,我太小心谨慎了。我在php和服务器端身份验证方面几乎没有经验,真的不知道欺骗这样的系统有多容易。我想它看起来很安全,但却为想偷偷溜进的人敞开了大门。谢谢你的建议

所以,如果以后有人发现了这一点,我会这样做(警告:我不知道这是否是最安全的方法,但对我来说似乎没问题)

  • 将id_令牌发布到我的php页面
  • 将id令牌发布到
    https://www.googleapis.com/oauth2/v3/tokeninfo
    via curl
  • 从curl得到响应对象,对照aud检查它 房屋署 通过简单的
    ==
    比较
  • 如果他们签出,请执行API操作

  • 我希望这对某人有帮助。如果这种方法有什么灾难性的错误,请告诉我

    @deek-为什么还要推荐这个?代码是100%可读的,他们做得很好。这不是ajax问题。根据你的建议,他们仍然会有相同的问题“如何处理数据”。检查这个Lucas,你能告诉我们控制台中的输出是什么吗(删除个人信息)?@jesse,他似乎有点不知所措。jquery的Ajax实现非常容易使用。@deek-你为jquery工作吗?为什么我们在一篇非jquery文章中谈论jquery。这对老年退休金问题没有帮助
    {
     "iss": "accounts.google.com",
     "at_hash": "e2CYheQnJjpBfyS2StkM9D",
     "aud": "168479532489-Y23kc3sHhn9frJ65Bwtx8Ff4Xdq5RqSH.apps.googleusercontent.com",
     "sub": "56798241598765321849762",
     "email_verified": "true",
     "azp": "168479532489-Y23kc3sHhn9frJ65Bwtx8Ff4Xdq5RqSH.apps.googleusercontent.com",
     "hd": "example.com",
     "email": "lucas@example.com",
     "iat": "1444085795",
     "exp": "1444089395",
     "name": "Lucas Smith",
     "given_name": "Lucas",
     "family_name": "Smith",
     "locale": "en",
     "alg": "GU788",
     "kid": "jyaKrpekvYhcRx6KpYSbKhAdYYScLNbEqxqMfCY7"
    }