LoginSignup
1
1

More than 5 years have passed since last update.

40代おっさんの手習いで始めるPython(2018/05/22編)其の参

Posted at

昨日のソース、Twitter API の秘密鍵書いたままコミットしちまった。
やべぇ、このままだと俺のアカウントがレイバンのセールスマンロボットになってしまうかも知れない、と感じたおいらは以下のように対策を取った。

Twitter Appsのアプリの削除

APP削除.PNG
もう、APIの削除をためらわなく行う!

そしてTwitter Appsの新規申請を行う!

新規申.PNG

OAuth のキーをgitに登録しないために、工夫する

要するに、アプリを駆動するためのソースに、トークンや秘密鍵をべた書きしてたのが良くないのだ。
だから、まずはOAuthに必要な情報を取得するだけのモジュールを作成する

OAuth_ORG.py
# -*- 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 に追加する

.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 認証をするときは、こうやって対応する

sample.py
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 に実装しておくとよいのかな?
まぁ、その辺はおいおい試してみよう。

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1