【问题标题】:Can I store information from Google API in database?我可以将来自 Google API 的信息存储在数据库中吗?
【发布时间】:2012-04-30 12:32:40
【问题描述】:

我正在创建一个有用户注册的网站。我要做的是,当用户使用 Google 登录时,它会将他们的详细信息(ID、电子邮件、姓名、图片和 G+ 链接)存储在本地数据库中。然后每次用户连接到网站时,它都会检查用户 ID 是否在本地数据库中。如果是,他们已经登录并且可以访问他们所有的详细信息和他们上传的文件等。 如果不是,他们可以登录。

我是否允许这样做,或者我是否必须在用户访问的每个页面上对用户进行身份验证,然后找到一种方法将其链接到我的本地数据库?

【问题讨论】:

  • 我不认为你不能。用户共享的数据被称为“公开”是有原因的。 Facebook 或 Twitter 或任何其他 OAuth(或类似)数据提供商也是如此。每当您说您的名字是 John Doe 时,这意味着任何有权访问服务提供商的人都可以看到它。如果您作为用户不希望任何人知道它,只需在 OAuth 对话框中单击取消即可。 (如何在 SO 上添加新行?)
  • 是的,但是来自 Google 的登录提示也显示了我正在请求访问的内容:XXXXXX 正在请求以下权限: 查看有关您帐户的基本信息 查看您的姓名、公开个人资料 URL 和照片。查看您的性别和出生日期。查看您的国家、语言和时区。查看您的电子邮件地址 查看与您的帐户关联的电子邮件地址 在我不使用应用程序时执行这些操作

标签: php mysql google-api


【解决方案1】:

我认为您不允许将 API 信息存储在自己的数据库中。最重要的是,您为什么要花这么多时间来允许用户登录/访问他们的文档。如果您想使用他们的 google 信息作为登录凭据,您所要做的就是而不是检查您的数据库,而是对 google 的 API 进行 cURL 调用,看看他们是否返回给您一个用户。如果是这样,请创建一个会话并允许用户登录。

【讨论】:

  • 基本上我的数据库包含我的问题中提到的 5 个字段。如果我不使用谷歌,无论如何我都会要求他们填写这些信息,所以我所做的就是使用谷歌来填充数据。当用户登录网站时,他们可以上传文件、评论等,所以我需要一种方法来查询这个,如果我不能查询我的数据库,那么我不知道该怎么做?我想这个网站的流量会变得非常大,所以如果它在每次页面加载时调用 Google API,我很快就会达到每月 10,000 次 API 调用限制..
  • 将上传的文件等保存在您的数据库中。但是google的数据已经有了,不需要自己存储。 (它可能不合法)。最好是在他们登录时进行 google api 调用,让 google 将您从数据库中提取的用户信息返回给您,并在登录时将其粘贴到会话中。
  • 猜猜这是一种方法。但是,我如何确定哪些数据库条目适用于用户。我可以看到谷歌使用的唯一唯一字段是用户 ID,它是一串数字,但是如果我不允许将其保存在数据库中,那么我不知道该怎么做。我试图实现的整个系统与 StackOverflow 的实现方式几乎完全相同
  • @Greg Hesp 使用他们的 google ID 作为数据库中的主键。这还不错,只要它只是一个键并且它与不同的记录有关,然后是谷歌的记录。不允许提供 API 数据(或其缓存)的精确副本。他们的 Id 你可以坚持在会话中,中提琴你有你的用户和他们的独特信息,而无需在数据库中使用用户表的所有麻烦!
  • @Greg Hesp 如果保留他们的密钥听起来不像您想要做的事情,您可以根据 API 调用返回的一些数据轻松生成自己的密钥。 (例如,几个电子邮件字符、google id 的哈希值,并将整个内容放入 MD5 或 SHA1 中)
【解决方案2】:

使用 google plus 客户端流程并添加基于 HTML 的登录按钮。通过 ajax 调用 userid,然后将 resp.id 插入会话中。 sessionid 存储在数据库中。

但是,当关闭浏览器并再次登录时,会启动一个全新的会话,并且无法访问之前上传的任何文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    相关资源
    最近更新 更多