2015-08-30 4 views
1

У меня есть приложение Express, где я пытаюсь обновить токен доступа Yahoo OAuth 1.0 до истечения этого часа через час, чтобы пользователь не мог повторно войти в систему. Я использую https-паспорт-yahoo-oauth Passport strategy, который работает для первоначального OAuth.Обновить OAuth 1.0 Access Token Использование Passport

Существует стратегия (паспорт-oauth2-refresh) для обновления токена OAuth 2.0, который я не смог получить (я полагаю, очевидные причины).

Yahoo документы на обновив маркер доступа здесь =>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

 Смежные вопросы

  • Нет связанных вопросов^_^