0

我在我的 expressjs 应用程序中使用everyauth 对 37signals 站点进行 oauth 身份验证和授权。但是,这是一个一般性的 oauth 问题。

当用户第一次访问我的应用程序时,他从 37signals 站点对我的应用程序进行身份验证和授权。然后他被重定向到我的应用程序,我将用户信息与访问令牌一起保存在数据库中。现在让我们说,用户注销。如果他尝试登录,他将被迫再次授权我的应用程序。这个不对。我希望everyauth 绕过授权​​步骤,因为它已经完成了一次。这通常是通过在使用 oauth 提供程序站点启动 oauth 流程时传递刷新令牌来完成的。但我不确定everyauth 如何处理第二次登录。有人可以对此有所了解吗?

当用户尝试通过将他重定向到登录时,我启动 oauth 流程http://localhost/auth/37signals

这是我正在使用的everyauth代码,

everyauth['37signals']
  .appId('e6e76726501abf1b5627fe854b384ef8d62d7a55')
  .appSecret('7c6891f46cb19aaf1831785968630ed4a1b3c342')
  .findOrCreateUser( function (sess, accessToken, accessSecret, _37signalsUser) {
    console.log('inside findOrCreateUser');
    console.log(util.inspect(_37signalsUser));
    var promise = this.Promise();
    users.findOrCreateUser(_37signalsUser, accessToken, accessSecret, promise);
    return promise;

  })
  .redirectPath('/authenticated');

我实施了 twitter 策略,在这里也遇到了同样的问题。每次用户注销后登录时,都会出现批准屏幕(授权应用名称使用您的帐户)。

4

1 回答 1