Google 登录 iOS 和 Web

Google Sign In iOS and Web

我正在构建一个带有网络和 iOS 应用程序的系统。 Web 部件需要可在移动部件上使用的身份验证,反之亦然。 我想添加对 google 登录 Web 和移动部分的支持。为了测试,我使用了

中的代码

https://developers.google.com/identity/sign-in/ios/start-integrating

对于 iOS 和

https://developers.google.com/identity/sign-in/web/

对于 Web 部件。 应用程序和网络(电子邮件、个人资料)的范围相同

预期流量

  1. 用户使用 google 登录并授予移动(或网络)访问权限
  2. 用户访问网站(或应用程序)
  3. 用户使用 google
  4. 登录
  5. 无需再次授权

我得到了什么

  1. 用户使用 google 登录并授予移动设备访问权限
  2. 用户访问网站
  3. 用户使用 google
  4. 登录
  5. 再次请求相同的权限

如何避免再次请求许可?来自文档 (https://developers.google.com/identity/sign-in/web/cross-platform-sign-in) 似乎有可能获得预期的流量,但实际上我无法获得它。 iOS 和 Web 在同一个 google 开发者项目中。

我按照以下指南按预期完成了这项工作:https://developers.google.com/identity/protocols/CrossClientAuth https://developers.google.com/identity/sign-in/ios/offline-access

您需要做的是:

先加 [GIDSignIn sharedInstance].serverClientID = @"SERVER_CLIENT_ID";

在您的 iOS appDelegate 中。当用户通过应用程序进行身份验证时,您现在可以通过 GIDGoogleUser 对象的 serverAuthCode 属性检索对您的 server_client_id 有效的令牌。

将令牌发送到服务器并在令牌端点上对其进行验证 (/oauth2/v3/token) redirect_uri 必须为空而 grant_type 必须为 authorization_code 否则您将拥有400 响应。

您的服务器现已通过身份验证,用户登录网站时不会再次询问权限。