2015-08-30 71 views
1

我有一個快速應用程序,我試圖在一小時後刷新雅虎OAuth 1.0訪問令牌,因此用戶不必重新登錄。我正在使用https-passport-yahoo-oauth護照策略,該策略適用於最初的OAuth。刷新雅虎OAuth 1.0訪問令牌使用護照

有一個刷新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); 

我在想,我可能能夠使用請求,並推出自己的令牌刷新,但我有點不確定從哪裏開始。任何幫助?真的很感謝任何建議。

回答

0

是的,你完全可以做到這一點使用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

+0

謝謝!這完全奏效。我堅持這一點,我打電話30分鐘的函數結束,它看起來就是相應地更新標記。 – Matt

相關問題