我正在构建一个包含 Web 和 iOS 应用程序的系统。 Web 部件需要可在移动部件上使用的身份验证,反之亦然。
我想在网络和移动部分添加对谷歌登录的支持。对于测试,我使用了来自 的代码
https://developers.google.com/identity/sign-in/ios/start-integrating
适用于 iOS 和
https://developers.google.com/identity/sign-in/web/
用于 Web 部件。
应用程序和网络(电子邮件、个人资料)的范围相同
预期流量
- 用户使用 google 登录并从移动设备(或网络)授予访问权限
- 用户访问网站(或应用程序)
- 用户使用 google 登录
- 无需再次授予权限
我得到了什么
- 用户使用 google 登录并从移动设备授予访问权限
- 用户访问网站
- 用户使用 google 登录
- 再次请求相同的权限
如何避免再次请求许可?来自文档 (https://developers.google.com/identity/sign-in/web/cross-platform-sign-in)
似乎可以获得预期的流量,但实际上我无法获得它。 iOS 和 Web 在同一个谷歌开发者项目中。
Best Answer-推荐答案 strong>
我按照以下指南按预期完成了这项工作: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/
|