1

python-firebaseを使用して firebaseioと通信できますが、firebaseio を使用して NEST デバイスと実際に通信する方法に関するチュートリアルが見つかりません。

firebaseio の例はどれも NEST とは何の関係もありません。同様に、NEST の例も firebaseio とは何の関係もないようです。

firebaseio アカウントは何らかの方法で home.nest.com からデータをインポートすることになっていますか? 2つをリンクするにはどうすればよいですか?


NEST のデータがないのに、なぜ firebaseio で認証する必要があるのでしょうか?

python-firebase :

認証

Firebase での認証は、単に JWT 規格に準拠したトークンを作成し、それを auth という名前でクエリ文字列に入れるだけです。ライブラリがそのトークンを作成するので、有効なトークンを自分で作成するのに苦労することはありません。データが何らかのセキュリティ ルールで書き込み/読み取り操作から保護されている場合、バックエンドは適切なエラー メッセージをステータス コード 403 Forbidden と共にクライアントに返します。

from firebase import firebase
firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', authentication=None)
result = firebase.get('/users', None, {'print': 'pretty'})
print result
{'error': 'Permission denied.'}

authentication = firebase.Authentication('THIS_IS_MY_SECRET', 'ozgurvt@gmail.com', extra={'id': 123})
firebase.authentication = authentication
print authentication.extra
{'admin': False, 'debug': False, 'email': 'ozgurvt@gmail.com', 'id': 123, 'provider': 'password'}

user = authentication.get_user()
print user.firebase_auth_token
"eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJhZG1pbiI6IGZhbHNlLCAiZGVidWciOiBmYWxzZSwgIml
hdCI6IDEzNjE5NTAxNzQsICJkIjogeyJkZWJ1ZyI6IGZhbHNlLCAiYWRtaW4iOiBmYWxzZSwgInByb3ZpZGVyIjog
InBhc3N3b3JkIiwgImlkIjogNSwgImVtYWlsIjogIm96Z3VydnRAZ21haWwuY29tIn0sICJ2IjogMH0.lq4IRVfvE
GQklslOlS4uIBLSSJj88YNrloWXvisRgfQ"

result = firebase.get('/users', None, {'print': 'pretty'})
print result
{'1': 'John Doe', '2': 'Jane Doe'}
4

2 に答える 2

4

Nest は、Firebase ホステッド サービスとプロトコル互換性のある独自のサーバーを運用しています。とはいえ、いくつかの小さな違いがあります。Firebase クライアント ライブラリ (および python-firebase などの REST ラッパー) は引き続き使用できますが、特定の手順に従う必要があります (Nest Intro here )。

大きな変更点は、新しい Firebase インスタンスの作成方法に対処する必要があります。使用する代わりに を使用しhttps://<your-firebase>.firebaseio.comますwss://developer-api.nest.com。次に、Nest 認証トークンを使用して認証します。Nest 化された JS は次のようになります。

var dataRef = new Firebase('wss://developer-api.nest.com');
dataRef.auth(nestToken);

Python は次のようになります。

from firebase import firebase
authentication = firebase.Authentication('YOUR_NEST_TOKEN', 'YOUR_EMAIL', extra={})
firebase = firebase.FirebaseApplication('wss://developer-api.nest.com', authentication)

通常、Nest の場合、メールや追加ではなく、トークンのみが必要です。つまり、他のpython-firebase ライブラリを使用するか、Simple Login をラップする以外のプロバイダーを許可するようにソースを変更する必要がある場合があります。元のライブラリはメール フィールドを使用していないようです (このコメントを参照)。行わなければならないもう 1 つの変更は、すべての Firebase URL がで始まるアサートを変更httpsし、代わりにhttpsorで始まることを許可することwssです。

また、通常の Firebase ツール ( の Firebase ダッシュボード<your-firebase>.firebaseio.comや Chrome 拡張機能Vulcanなど) を使用する代わりに、 Nest Chrome 拡張機能を使用して Nest デバイスを管理します。

うまくいけば、これが役に立ちます!

于 2014-09-23T03:48:33.680 に答える
2

Nest Firebase インスタンスのベース URI はhttps://developer-api.nest.comであり、Nest は独自のOAuth 認証を使用して、開発者がユーザーのデータにアクセスできるようにします。

python-firebase には詳しくありませんが、Firebase インスタンスの URI を Nest を指すように変更し、外部 OAuth トークンを渡すことができるようです (どちらも Firebase で記述されたクライアントでもサポートされています)。

于 2014-09-17T23:27:21.333 に答える