OGeek|极客世界-中国程序员成长平台

标题: ios - Google 登录 iOS 和网络 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 16:28
标题: ios - Google 登录 iOS 和网络

我正在构建一个包含 Web 和 iOS 应用程序的系统。 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. 无需再次授予权限

我得到了什么

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

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



Best Answer-推荐答案


我按照以下指南按预期完成了这项工作: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 有效的 token 。

将 token 发送到服务器并在 token 端点(/oauth2/v3/token)上验证它 redirect_uri 必须为空,而 grant_type 必须是 authorization_code 否则你会得到 400 响应。

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

关于ios - Google 登录 iOS 和网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32903351/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4