これは、どこから始めればよいか困っているので、非常に幅広い質問になるでしょう。Passport を使用して SmartThings で認証しようとしています。ここで SmartThings のドキュメントを参照してください: http://docs.smartthings.com/en/latest/smartapp-web-services-developers-guide/tutorial-part2.htm
SmartThings はユーザー情報を返しません。単に認証トークンを返し、SmartThings インスタンスを呼び出して環境を制御します。
現在、OAuth2 戦略を使用しようとしていますが、これは、ユーザーをシリアル化するためにユーザー プロファイルが返されることを期待しています。この場合は null です。
私が達成しようとしているのは、誰かが 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());
}
}