【发布时间】:2011-04-22 08:20:44
【问题描述】:
我即将在我的网站上添加一项功能,将内容发布到用户的 Twitter 帐户。我读到存储“OAuth”令牌比存储用户名和密码更好(这是有道理的)。
我应该在我的 MySQL 数据库中存储什么?令牌、秘密和用户名?还是只是令牌?
您会使用什么数据类型?它们有多大?
谢谢!
【问题讨论】:
我即将在我的网站上添加一项功能,将内容发布到用户的 Twitter 帐户。我读到存储“OAuth”令牌比存储用户名和密码更好(这是有道理的)。
我应该在我的 MySQL 数据库中存储什么?令牌、秘密和用户名?还是只是令牌?
您会使用什么数据类型?它们有多大?
谢谢!
【问题讨论】:
它们不是很大(可能是 15 或 20 个字符,具体记不清了),并且是字符串。注意:这可能会改变。 OAuth 规范中没有任何内容描述如何生成令牌和秘密,也没有描述它们的外观。我希望它们永远是字符串,但我可能想让列比目前应急所需的大一点。
如果您将它们存储在数据库中,您需要一些其他方式来验证用户,以便您知道要提取和使用谁的令牌,这样它们就不会被恶意使用。如果您已经拥有它并且它正在工作,那么这是有道理的,否则您可能需要重新考虑它。
另一种方法是将它们的令牌存储在 cookie 中,这样做的缺点是(如果您不加密它们或使用 SSL)它们在网络上以明文形式传输,并且如果它们更换计算机、浏览器或删除他们的 cookie,您必须让他们再次经历整个 OAuth 过程。
对于没有其他身份验证的网站,我会将它们加密并将它们存储在 cookie 中。如果您已经让他们登录,则将令牌和密码与登录名相关联并将它们存储在数据库中。
还有其他方法。如果您不想使用加密,您可以使用随机生成的 ID(如 cookie 中的 GUID/UUID)来指向数据库中带有令牌的记录。总而言之,这取决于您希望您的应用程序从用户的角度来看如何表现。
确保您处理用户也取消授权您的应用的情况。
【讨论】:
应用程序密钥和令牌特定于您的应用程序,可以存储在数据库或某些配置文件中。 您应该使用 varchar (100)(最大)连同他的 twitter ID 将用户令牌存储到数据库中。您可以在从 twitter OAuth 获取其他详细信息的同时获取 twitter ID。 如需进一步指导,请点击此链接
http://www.9lessons.info/2010/02/connect-twitter-api-with-oauth-using.html
【讨论】: