是否应在每次用户登录时生成oAuth中的访问令牌?

Jua*_*ank 10 php api twitter oauth

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

首次登录用户:

  • 获取请求令牌
  • 将用户发送到提供商的身份验证页面
  • user使用oauth标记和oauth验证程序返回回调网址
  • 获取访问令牌
  • 在db上保存访问令牌/ user_id/screen_name以备将来使用

用户10分钟后返回:

  • 如果用户未注销,则访问令牌仍在服务器会话变量中.否则,重复过程.

用户在1个月后返回:

  • 获取请求令牌
  • 将用户发送到提供商的身份验证页面
  • user使用oauth标记和oauth验证程序返回回调网址
  • (此时我只有oauth令牌,我怎么知道用户以前是否已经使用twitter登录并从db中提取其访问令牌?)
  • 如果它是用户的第一个登录名,则生成访问令牌.

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

一百万谢谢!

ari*_*ayu 19

您不应为每次访问重新生成令牌.只有在它过期时才生成它.我使用OAuth构建了twitter应用程序.在这里我的流程:

  1. 当用户登录时,我会检查他们是否在DB中有令牌

    1.1.如果它不存在,请对它们进行身份验证,然后存储并使用生成的令牌

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

    1.2.1.如果twitter没有抱怨,那么令牌仍然有效,请使用它.

    1.2.2.如果Twitter抱怨,则令牌已过期.回到1.1.

    1.2.3.如果经过x重试后Twitter仍然抱怨.有问题,请通知管理员!

这是图解说明:

在此输入图像描述

  • 我遇到了同样的问题,我不太了解情况.如果我们不知道用户是谁,我们如何检查我们是否有用户的令牌?如果有人用Twitter按钮点击登录,我会收到一个请求令牌.正如Juank上面评论的那样,我看不出如何用它来识别用户?如果在这个阶段,我们不知道用户是谁,我们如何测试我们是否有一个保存的令牌,而不让他们再次通过Twitter身份验证? (2认同)