Google使用PHP登录但未使用库

时间:2016-06-21 04:45:52

标签: php oauth google-api google-oauth google-api-php-client

关注并修改this Google help article中的一些说明,我已经获得了JavaScript来返回类似这样的代码(这个来自Google的示例):

{"code":"4/yU4cQZTMnnMtetyFcIWNItG32eKxxxgXXX-Z4yyJJJo.4qHskT-UtugceFc0ZRONyF4z7U4UmAI"}

然后我可以发送到我的PHP服务器。但是,我不知道如何在服务器端处理它,而不使用谷歌的库;我更愿意只是从服务器向Google发送HTTPS请求,并使用代码来获取数据,而不是导入整个API。这是可能的,我将如何做到这一点?

最后,我想要获取的主要数据是电子邮件地址和Google ID,然后我可以使用该ID在我自己的数据库中为用户创建帐户。

1 个答案:

答案 0 :(得分:1)

您拥有的是步骤1,您拥有授权码。

下一步是将其换成访问令牌这应该作为http Post

发送
  

https://accounts.google.com/o/oauth2/token
  code = {授权码}& client_id = {ClientId} .apps.googleusercontent.com& client_secret = {ClientSecret}& redirect_uri = {redirect_uri}& grant_type = authorization_code

服务器应该返回类似这样的内容

{
"access_token" : "ya29.1.AADtN_VSBMC2Ga2lhxsTKjVQ_ROco8VbD6h01aj4PcKHLm6qvHbNtn-_BIzXMw",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "1/J-3zPA8XR1o_cXebV9sDKn_f5MTqaFhKFxH-3PUPiJ4"
}

您发送给api的任何请求只需添加& Access_token = {访问令牌}

要在新的一个过期之后获得一个新的,你可以使用上面的刷新令牌进行另一次HTTP POST以获得一个新的

  

https://accounts.google.com/o/oauth2/token
  CLIENT_ID = {客户端Id} .apps.googleusercontent.com&安培; client_secret = {ClientSecret}&安培; refresh_token = 1 / ffYmfI0sjR54Ft9oupubLzrJhD1hZS5tWQcyAvNECCA&安培; grant_type = refresh_token

服务器应该回复

{
"access_token" : "ya29.1.AADtN_XK16As2ZHlScqOxGtntIlevNcasMSPwGiE3pe5ANZfrmJTcsI3ZtAjv4sDrPDRnQ",
"token_type" : "Bearer",
"expires_in" : 3600
}

注意:我只对服务器应用程序进行了此操作,但实际上并未使用Web应用程序对其进行测试。它应该工作只是确保您的重定向uri设置正确。

如果您有任何问题,请告诉我。代码从我的Google 3 legged oauth2 flow教程中删除。