先日の続きです。前回は見事に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
実行してみましょう。ログインすると、はい、うまくいきました!
今日はここまでとしましょう。