Php 服务器端用户标识

Php 服务器端用户标识,php,android,google-api,google-api-php-client,Php,Android,Google Api,Google Api Php Client,所以这可能是个新问题 我正在用PHP开发一个REST(ful)JSON应用程序编程接口。此API主要由Android设备通过应用程序访问。由于只有拥有G+帐户的人才会使用此应用程序,我想使用谷歌API进行用户身份验证。到目前为止,一切都很简单 但是我第一次使用GoogleAPI,我读到了GoogleAPI DevDocs中有趣且需要的部分。因此,我找到了目前正在使用的谷歌api php客户端 以下是我认为此身份验证过程的工作原理: 用户在移动设备上登录G+帐户(或类似;我读到一些关于PlaySt

所以这可能是个新问题

我正在用PHP开发一个REST(ful)JSON应用程序编程接口。此API主要由Android设备通过应用程序访问。由于只有拥有G+帐户的人才会使用此应用程序,我想使用谷歌API进行用户身份验证。到目前为止,一切都很简单

但是我第一次使用GoogleAPI,我读到了GoogleAPI DevDocs中有趣且需要的部分。因此,我找到了目前正在使用的谷歌api php客户端

以下是我认为此身份验证过程的工作原理:

  • 用户在移动设备上登录G+帐户(或类似;我读到一些关于PlayStore ID令牌或其他内容)
  • 该应用现在确实有一个令牌(如声明的(响应))
    
    “访问令牌”:“1/fFAGRNJru1FTz70BzhT3Zg”,
    “expires_in”:3920,
    “令牌类型”:“承载者”
    
  • Android应用程序向我的PHP API发送请求,如
    GET/meeting/:id
    ,并发送访问令牌(
    1/fFAGRNJru1FTz70BzhT3Zg
  • 我的应用程序可以使用访问令牌,并可以询问
    googleAPI/people/me
    用户ID
  • 用户在我的API上的请求中被识别,魔法可以继续
  • 但是提到的Google lib for PHP存在一个问题: 函数
    setAccessToken($accessToken)
    需要整个JSON响应,如文档所述:
    
    {“访问令牌”:“令牌”,
    “刷新令牌”:“令牌”,
    “令牌类型”:“承载者”,
    “expires_in”:3600,
    “id_令牌”:“令牌”,
    “已创建”:1320790426}
    
    (参见)对GoogleAPI的授权请求

    在每次请求时使用id_token、refresh_token和access_token将整个JSON响应发送到我的API,这不是一个解决方案,因为这将导致巨大的流量负载,我相信有一个简单的解决方案,但我看不到

    我希望我能正确地解释我的想法和问题,我希望我的英语没有那么差。

    我刚刚解决了这个问题

    id_令牌足以识别用户。当android应用程序发送一个带有id_标记的请求时,服务器可以向谷歌询问其身份

    谷歌api php客户端中这适用于:
    
    $id\u token=$\u GET['id\u token'];
    $client=新的Google_客户端();
    $attr=$client->verifyIdToken($id_token)->getAttributes();
    echo$attr['payload']['sub'];
    

    我在(还有一个“推荐流程”描述)和问题中的一个帮助下发现了这一点