服务器端用户标识

时间:2014-03-31 09:38:44

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

所以这可能会成为一个新问题。

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

但是我第一次使用GoogleAPI并且阅读了有趣且需要的部分Google API DevDocs。所以我找到了我现在正在使用的 google-api-php-client

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

  1. 用户登录移动设备上的G +帐户(或类似内容;我读过有关PlayStore ID令牌或here的内容)
  2. 该应用现在有一个令牌(如陈述here(回复)) "access_token":"1/fFAGRNJru1FTz70BzhT3Zg", "expires_in":3920, "token_type":"Bearer"
  3. Android-App向我的PHP API发送请求,如GET /meeting/:id,并发送access_token(仅限1/fFAGRNJru1FTz70BzhT3Zg)。
  4. 我的应用可以使用access_token,并可以向googleAPI/people/me询问用户的ID。
  5. 在我的API请求中识别用户,并且魔术可以继续
  6. 但是上面提到的Google-lib for PHP存在问题: 函数setAccessToken($accessToken)需要整个JSON响应,因为文档说: {"access_token":"TOKEN", "refresh_token":"TOKEN", "token_type":"Bearer", "expires_in":3600, "id_token":"TOKEN", "created":1320790426} (请参阅here)对GoogleAPI的身份验证请求。

    在每次请求时,无法将id_token,refresh_token和access_token的整个JSON响应发送到我的API,因为这会导致大量流量并且我确定有一个简单的解决方案,但我没有看到它。

    我希望我能正确解释我的想法和问题,我希望我的英语不是那么糟糕。

1 个答案:

答案 0 :(得分:1)

我刚刚解决了这个问题。

id_token足以识别用户。当Android应用程序发送带有id_token的请求时,服务器可以向谷歌询问其身份。

google-api-php-client 中,这适用于: $id_token = $_GET['id_token']; $client = new Google_Client(); $attr = $client->verifyIdToken($id_token)->getAttributes(); echo $attr['payload']['sub'];

我在Google API Docs中找到了这个内容(还有#34;推荐流程" -description)并且在问题中mentioned link之一的帮助下。