【问题标题】:Refresh Yahoo OAuth 1.0 Access Token Using Passport使用 Passport 刷新 Yahoo OAuth 1.0 访问令牌
【发布时间】:2015-11-24 19:08:48
【问题描述】:

我有一个 Express 应用程序,我试图在 Yahoo OAuth 1.0 访问令牌在一小时后过期之前刷新它,这样用户就不必重新登录。我正在使用 https-passport-yahoo-oauth Passport 策略,它适用于初始 OAuth。

这里有一个刷新 OAuth 2.0 令牌的策略 (passport-oauth2-refresh),但我无法开始工作(我想原因很明显)。

关于在此处刷新访问令牌的雅虎文档 => https://developer.yahoo.com/oauth/guide/oauth-refreshaccesstoken.html

这是我的初始 OAuth 代码如下。然后,我如何才能根据此将过​​期或即将过期的令牌换成新的?

passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(obj, done) {
  done(null, obj);
});


 var strategy = new YahooStrategy({
    consumerKey: APP_KEY,
    consumerSecret: APP_SECRET,
    callbackURL: (process.env.APP_URL || require('./conf.js').APP_URL) + 'auth/yahoo/callback'
  },
  function(token, tokenSecret, profile, done) {
    var data = profile._json;

    var userObj = {
      id: profile.id,
      name: data.profile.nickname,
      avatar: data.profile.image.imageUrl,
      dateJoined: new Date().getTime(),
      lastUpdated: new Date().getTime(),
      lastVisit: new Date().getTime(),
      accessToken: token,
      tokenSecret: tokenSecret,
      sessionHandle: profile.oauth_session_handle
    };
    return done(null, userObj);
  }
);

passport.use(strategy);

我在想我也许可以使用 Request,并滚动我自己的令牌刷新,但我有点不确定从哪里开始。有什么帮助吗?非常感谢任何建议。

【问题讨论】:

    标签: node.js oauth request passport.js yahoo


    【解决方案1】:

    是的,你完全可以使用request

    request.post('https://api.login.yahoo.com/oauth/v2/get_token', {
      oauth: {
        consumer_key:'...',
        consumer_secret:'...',
        token:'...',
        token_secret:'...',
        session_handle:'...'
      }
    }, function (err, res, body) {})
    

    您也可以使用Purest。请注意,当用户第一次授权您的应用时,您应该存储session_handle

    【讨论】:

    • 谢谢!那完全奏效了。我把它放在我每 30 分钟调用一次的函数的末尾,看起来它正在相应地更新令牌。
    猜你喜欢
    • 2013-11-23
    • 2011-08-05
    • 2021-01-18
    • 2016-08-13
    • 2015-04-01
    • 2015-11-26
    • 2017-06-09
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多