😎

PyCharmでSwitchBot APIを叩く

2023/02/16に公開

はじめに

手順

token, secretなどの変数はソースコード内に書いておくと危険です。よくあるのは、環境変数に書く方法が行われます

色々な方法はありますが、ここではPyCharmの設定だけで閉じる手順を残しておきます。

  1. PyCharmを起動する
  2. メニューから "実行" を選び、"実行構成の編集" を選択
  3. 画面の赤枠の四角いやつを押す
  4. "環境変数" というウィンドウが開く。赤枠のプラスボタンを押すと、下の表に行が増えていきます。ここに入れた「名前」と「値」のペアが環境変数です。
  5. SwitchBot のスマホアプリで得たトークン、クライアントシークレットの値を、それぞれ"TOKEN", "SECRET" の名前で登録する。入力するときはダブルクリックで入力開始できます
  6. 2つとも入れ終わったら、OKボタンを押して、"環境変数" のウィンドウを閉じる
  7. "実行/デバッグ構成" のウィンドウもOKボタンを押して閉じる
  8. ここからはPythonのソースコードを変更します。以下のコードの箇所を変えていきます。
  9. 今まで文字列 ("abcdefg..." など) でベタに書いていたところを、以下のように書き換える

変更後は以下になります

# open token
token = os.environ.get('TOKEN')
# secret key
secret = os.environ.get('SECRET')

os.environ.get("")が行っているのは、5. で入れた環境変数(TOKEN, SECRET)の値を参照する、という意味になっています。こうすることで、ソースコードにtoken, secretをベタに書かなくてもよくなります。

  1. 最後に。SwitchBot APIのサンプルでは以下のようにprintが入っていますが、これをそのまま実行すると全部漏れてしまいます。以下のコードすべて削除しましょう。
print ('Authorization: {}'.format(token))
print ('t: {}'.format(t))
print ('sign: {}'.format(str(sign, 'utf-8')))
print ('nonce: {}'.format(nonce))

おすすめ:トークンのリセット

もし一度トークンが見えてしまった場合、スマートフォンでトークンを取得した画面からリセットが出来ます。リセットしてしまえば、一度見えてしまったトークンは即座に無効になります。

トークンを再設定する手間は発生しますが、安全度が高いので、強く推奨です。

Discussion