4

我想使用Google Plus 登录在iOS 应用程序中验证我的用户。我已按照https://developers.google.com/+/features/sign-in上描述的 iOS 指南进行操作。客户端登录与 Google + 平台完美配合。我不明白如何在服务器端对用户进行身份验证。

我已经看到客户端上的访问令牌可以在某种程度上在https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=XYZ123上得到验证。通过验证用户通过 HTTPS 发送的访问令牌来验证客户端是否安全?

使用客户端上的 Google+ 登录按钮时有更好的解决方案吗?据我了解,Google 建议使用 Google+ 登录按钮:

Google+ 登录按钮是用户注册和登录您的应用的一种简单方式。这样您就可以知道他们在 Google+ 上的身份,并为您的应用打造更加个性化的体验,而无需再创建另一个用户名和密码

4

1 回答 1

3

简短的回答:是的。在 iOS 上,这是目前最好的方法。重要的是您的验证通常会检查您想要的内容:

  • 客户 ID 是您项目中的客户 ID。
  • 您只使用访问令牌中的用户 ID
  • 令牌未过期

当您调用 tokeninfo 时,会自动处理到期和其他基本验证。只需确保检查客户端 ID,并使用 tokeninfo 响应中的用户 ID 来查找本地用户。

{
 "issued_to": "1234.apps.googleusercontent.com",
 "audience": "1234.apps.googleusercontent.com",
 "user_id": "104824858261236811362",
 "scope": "https://www.googleapis.com/auth/plus.login",
 "expires_in": 3584,
 "access_type": "online"
}

这是响应的一个示例。客户端 ID 是此处的“受众”字段(实际上,也是颁发给的),而 user_id 是 Google 用户 ID - 这就是您应该在数据库中查找以找到匹配的应用程序用户的内容。

在 Android 和 Web 上还有另外两个选项:检索 ID 令牌(基本上是一个加密签名的令牌,它直接包含与使用访问令牌调用 tokeninfo 返回的信息相似的信息),以及检索代码(可用于在服务器端交换访问令牌和 id 令牌)。这两个目前在 iOS 上不可用,因此通过 HTTPS 传递访问令牌是目前最好的选择。

于 2013-08-19T14:28:45.373 回答