昨日のソース、Twitter API の秘密鍵書いたままコミットしちまった。
やべぇ、このままだと俺のアカウントがレイバンのセールスマンロボットになってしまうかも知れない、と感じたおいらは以下のように対策を取った。
#Twitter Appsのアプリの削除
もう、APIの削除をためらわなく行う!
#そしてTwitter Appsの新規申請を行う!
#OAuth のキーをgitに登録しないために、工夫する
要するに、アプリを駆動するためのソースに、トークンや秘密鍵をべた書きしてたのが良くないのだ。
だから、まずはOAuthに必要な情報を取得するだけのモジュールを作成する
# -*- coding: utf-8 -*-
def OAuth_CK():
CK = 'XXXXXXXXXX' # Consumer Key
return CK
def OAuth_CS():
CS = 'XXXXXXXXXX' # Consumer Secret
return CS
def OAuth_AT():
AT = 'XXXXXXXXXX-XXXXXXXXXX' # Access Token
return AT
def OAuth_AS():
AS = 'XXXXXXXXXX' # Accesss Token Secert
return AS
で、このモジュールをgitに登録しないように .gitignore に追加する
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
Bottle Practice/PyTwitter/OAuth_ORG.py
Bottle Practice/PyTwitter/OAuth_ORG.py を追加しておくことで、このファイルをうっかり git に挙げることがなくなるようにしておくのだ。秘密鍵はローカルにだけ。複数の端末で開発したいときは少々面倒だが、ここはセキュリティを重視しておきたい。
で、実際にOAuth 認証をするときは、こうやって対応する
import OAuth_ORG
from requests_oauthlib import OAuth1Session
def get_search():
#ツイッターAPIを取得する
#OAuth_ORG.py を作成し、それぞれのキーを返すメソッドを用意すること。
#git には加えてない(秘密鍵が漏れるの怖いので)
CK = OAuth_ORG.OAuth_CK()
CS = OAuth_ORG.OAuth_CS()
AT = OAuth_ORG.OAuth_AT()
AS = OAuth_ORG.OAuth_AS()
twitter = OAuth1Session(CK, CS, AT, AS)
こうすることで、gitに漏らさずにTwitter のトークンとか取得できるようにした。
これはまぁ、もう一つ利点があって、別のアプリ作る時にもこの OAuth_ORG モジュールを同じフォルダにおいて import すればよいのだから便利。
…あれ? OAuth1Session を返すメソッドもついでに OAuth_ORG に実装しておくとよいのかな?
まぁ、その辺はおいおい試してみよう。