gpt4 book ai didi

php - 服务器端用户识别

转载 作者:行者123 更新时间:2023-11-29 01:43:49 28 4
gpt4 key购买 nike

所以这可能是一个新问题。

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

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

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

  1. 用户在移动设备上登录 G+ 帐户(或类似设备;我阅读了一些有关 PlayStore ID token 或其他内容的信息 here)
  2. 该应用程序现在确实有一个 token (如所述here(响应))
    "access_token":"1/fFAGRNJru1FTz70BzhT3Zg",
    “expires_in”:3920,
    “token_type”:“不记名”
  3. Android-App 向我的 PHP API 发送请求,如 GET/meeting/:id 并发送 access_token(仅限 1/fFAGRNJru1FTz70BzhT3Zg)。
  4. 我的应用可以获取 access_token 并可以向 googleAPI/people/me 询问用户 ID。
  5. 用户在我的 API 请求中被识别,魔术可以继续

但是上面提到的 PHP 的 Google-lib 有一个问题:函数 setAccessToken($accessToken) 需要整个 JSON 响应,正如文档所说:
{“access_token”:“ token ”,
“refresh_token”:“ token ”,
"token_type":"不记名",
“expires_in”:3600,
“id_token”:“ token ”,
“创建”:1320790426}
(参见 here )对 GoogleAPI 的授权请求。

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

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

最佳答案

我刚刚解决了这个问题。

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 中找到了这个(还有一个“推荐流程”-描述)并在 mentioned link 之一的帮助下在问题中。

关于php - 服务器端用户识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22758267/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com