这将是一个相当广泛的问题,因为我被困在哪里真正开始。我正在尝试使用 Passport 对 SmartThings 进行身份验证。在此处查看 SmartThings 文档:http: //docs.smartthings.com/en/latest/smartapp-web-services-developers-guide/tutorial-part2.htm
SmartThings 不返回任何用户信息,只是一个身份验证令牌,然后您可以使用它来调用 SmartThings 实例以控制环境。
我目前正在尝试使用 OAuth2 策略,但是这需要返回一个用户配置文件来序列化用户,在这种情况下为空。
我想要实现的是让某人使用 SmartThings 进行授权并将他们的令牌存储在会话中,以便可以提取他们的数据。
从长远来看,我会将它分配给我的应用程序本地的用户帐户,但是现在,我只想让上述工作正常进行。
有谁知道我在这方面做得最好。我对此有些挣扎..也许使用 OAuth2 策略不是正确的方法吗?我目前有这个:
var passport = require('passport');
var OAuth2Strategy = require('passport-oauth2').Strategy;
var verifyHandler = function(req, token, refreshToken, profile, done){
return done(token)
}
passport.serializeUser(function(user, done) {
done(null, user.id);
});
module.exports.http = {
customMiddleware: function(app) {
passport.use(new OAuth2Strategy({
authorizationURL: 'https://graph.api.smartthings.com/oauth/authorize',
tokenURL: 'https://graph.api.smartthings.com/oauth/token',
clientID: '123',
clientSecret: 'abc',
callbackURL: 'http://localhost:1337/auth/smartthings/callback',
skipUserProfile: true,
passReqToCallback: true
}, verifyHandler));
app.use(passport.initialize());
app.use(passport.session());
}
}