0

これは、どこから始めればよいか困っているので、非常に幅広い質問になるでしょう。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());
  }
}
4

1 に答える 1

0

あなたがやりたいことは、認証プロセスでこれだと思います:

  1. localパスポートの戦略を使用してアプリケーションでユーザーを認証する
  2. SmartThings の認証コードとトークンを手動で生成する -ガイドはこちら
  3. ユーザーのセッションにトークンを保存する

その後、tokenin session を使用して SmartThings の API にリクエストを行うことができます

于 2016-06-28T12:41:30.237 に答える