nestのサンプルを動かしてみる(iOS編)

先日の続きです。前回は見事にwebサンプルを動作させることに挫折しました。問題の切り分けも兼ねて、先にiOSのサンプルを動作させてみることにします。

https://developer.nest.com/documentation/cloud/ios-nestdk よりiOS-NestDK-master.zipをダウンロードして展開します。
iOS-NestDK.xcodeprojを実行します。 ちなみに今回の実行環境は以下のとおり。

このアプリはサーモスタットのコントロールのデモのようです。Redmeに記載されている通り、まず、Constants.mを開いて、NestClientID, RedirectURLそれと NestClientSecret をこのページの値に書き換えます。

実行してみます。

Connect with your nest account!をタップします。
すると、webviewで認証のページに行きます。ここはweb版と同じ、認証の部分ですね。

 
オレンジのCONTINUEボタンをタップ。

ユーザー名とパスワードを入力してSIGN IN。するとPincodeが表示されます。

はい、web版と同じくここまで来て、動かなくなります。うーん、よくわからない。どうも、PINを表示しているようですよね。通常oauthなら、このpinを控えておき、アプリケーションに戻り、アプリケーションにpinを入力、ってのが定番なのですが・・・は、待てよ!これはもしや「リダイレクト」にしか対応していないのでは???ということでソースを読んでみると、あった!やはりリダイレクトしか想定していないコードのようです。
というわけで、リダイレクトに対応するようにClientsの設定を変更します。赤で囲んだ設定ボタンをクリックします。

 
OAuth Redirect URI(Leave blank for PIN-based authorization)
となっていることろに、存在するhttps:// のURLを記載しておきます。存在しないURLではうまくいきません。今回は自分のドメイン名を指定しました。

Constants.mを開いて、RedirectURLを設定します。

では実行してみましょう。
はい、うまくいきました!!!

次にブラウザでhttps://home.nest.com/を開いてみましょう。

現在の温度は華氏70度、設定温度は58度。同じですね。
では、iOSから設定温度を80度にしてみます。

すると、すぐにnestにも反映されます。

今度は、温度が下がってきた場合をテストしてみましょう。Nest Developer Toolで室温が華氏82度になったことにします。

 
すると、iOS側にも自動的に反映され、室温が82度(摂氏27度ぐらい)になっています。

ふう、無事に動きました!今回はOAuthでハマってしまいました。じゃあ、先日のサンプルも動くのでは?
再度、gruntしてhttp://localhost:8080/にアクセスします。
しかしながら、うまく行きません。ソースコードを読んでいくと、どうもリダイレクト先を適切に設定しなければんらないようです。https://developer.nest.com/clients を開きリダイレクト先を次のアドレスに変更します。
http://localhost:8080/auth/nest/callback
実行してみましょう。ログインすると、はい、うまくいきました!

今日はここまでとしましょう。

上部へスクロール