这是一个程序问题问题,而不是代码错误问题,如果我在错误的位置发布,请好心。
我已经成功验证了gplus用户客户端,因此浏览器正在准备让我使用google id。我现在想要将一些数据发布到我的网站上,并将该ID作为用户ID,但我希望保护它,这意味着我不希望任何有其他人的gplus id的人能够发布到我的网络应用程序(它必须是当时经过身份验证的用户。)
我应该安装php serverside sdk并使用它吗?如果是这样,我如何合并客户端数据?
由于
答案 0 :(得分:1)
你想要以安全的方式获取ID以使其难以冒充,你是完全正确的。有两个主要选项,authResult对象的两个属性都返回到回调中的符号:
将“代码”发送到服务器。这是OAuth 2.0流程的一部分,可以在服务器端交换访问令牌。您可以从中以用户身份进行API调用,并检索用户ID和其他详细信息。您可以确信用户是谁,因为只有Google可以生成该代码。这将涉及使用其中一个客户端库来处理令牌交换。
使用id_token
。这是一个base64编码的JSON blob,其中包含用户ID(如果您请求'email'范围,则包含电子邮件地址)。使其安全的是它包含加密签名,服务器可以验证,因此不能由Google以外的人创建。 id令牌可用于获取用户ID,因此可用于在服务器上查找用户,但不允许访问make API调用。好处是它只需要最新的验证证书,这些证书不会经常更改,因此大多数呼叫都不需要来自服务器的进一步网络流量来验证用户。
您使用的由您决定,但两者都需要服务器上的一些代码。通常,如果您不需要从服务器调用任何Google API,或者担心最大登录性能,请使用id_token
。这里有关于这种架构的更多信息:http://www.riskcompletefailure.com/2013/11/client-server-authentication-with-id.html
你甚至可以将两者结合起来。用户第一次登录(当他们看到同意屏幕时)代码交换不仅会返回访问令牌(用于拨打电话),还会返回一个长期存储的刷新令牌,您可以将其安全地存储在数据库中。如果您存储该文件,则可以使用id_token
快速查找用户,但仍使用刷新令牌来帮助进行API访问。