php - oAuth 中的 access token 是否应该在用户每次登录时生成?

标签 php api twitter oauth

我已经在 php 中实现了 oAuth(目前用于 Twitter),正如我在几个教程中读到的那样,您应该将访问 token 存储在数据库中以备将来使用。但是,我不知道您如何知道是否为特定用户存储了访问 token ,以决定是否应将其从数据库中取出或重新生成。这是描述我的问题的流程:

用户首次登录:

  • 获取请求 token
  • 将用户发送到提供商的身份验证页面
  • 用户返回带有oauth token 和oauth验证器的回调url
  • 获取访问 token
  • 在数据库中保存访问 token /user_id/screen_name 以备将来使用

用户在 10 分钟后返回:

  • 如果用户没有注销,访问 token 仍然在服务器 session 变量中。否则,重复过程。

用户在 1 个月后返回:

  • 获取请求 token
  • 将用户发送到提供商的身份验证页面
  • 用户返回带有oauth token 和oauth验证器的回调url
  • (此时我只有 oauth token ,我如何知道用户之前是否使用 Twitter 登录并从数据库中提取他们的访问 token ?)
  • 如果是用户第一次登录,生成access token。

oAuth 的主要工作流程很清楚,但是不清楚如何处理返回的用户以及应该存储或不存储哪些数据。

万分感谢!

最佳答案

您不应为每次访问重新生成 token 。仅在过期时生成它。我已经使用 OAuth 构建了 Twitter 应用程序。这是我的流程:

  1. 当用户登录时,我会检查他们是否在数据库中有 token

    1.1。如果不存在,则对它们进行身份验证,然后存储和使用生成的 token

    1.2。如果它存在,请使用它。

    1.2.1。如果 Twitter 没有提示,那么 token 仍然有效,请使用它。

    1.2.2。如果 Twitter 提示,则 token 已过期。回到1.1。

    1.2.3。如果在 x 重试 twitter 之后仍然提示。有问题,通知管理员!

这是图形解释:

enter image description here

关于php - oAuth 中的 access token 是否应该在用户每次登录时生成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7683047/

相关文章:

php - 如何诊断在 Apache 上运行的 SilverStripe 中的文件上传失败

api - Magento 导出订单到 3PL SOAP api 问题

IOS 获取 Twitter 当前热门趋势

python - 如何在 Web 应用程序(Google、Facebook、Twitter)中管理多个身份验证服务

php - 从表mysql中选择子记录

javascript - 如何将 iFrame 的内容插入数据库?

php - 使用 PHP 将 Wiktionary XML 数据转储到 MySQL 数据库中

api - Twitter 如何获取其地理位置数据?

android - 如何获取gmail用户的联系人?

python - Twython - 如何使用媒体 url 更新状态