title: PythonのRequest Libraryを使用してHueにログインする author: Hue Team type: post date: 2016-07-22T00:00:06+00:00 url: /ogin-into-hue-using-the-python-request-library/ sf_thumbnail_type:
HueはDjango Web Frameworkに依存しています。 Djangoにはユーザ認証システムがあります。Djangoはリクエストオブジェクトへの認証システムをフックするためにセッションとミドルウェアを使用します。Hueは認証するために「ユーザー名(username)」と「パスワード(password)」、「csrftoken」フォーム変数を使用する認証フォームを備えています。
このコードスニペットでは、よく知られているpythonの「リクエスト 」ライブラリを使用します。最初 GET “login_url” によりcsrftoken を獲得します。 “username”、”password”、”cfrftoken”および”next_url”が含まれているフォームデータのpythonディクショナリと”Referer”を含むヘッダのpythonディクショナリ、およびcookie用の空のpythonディクショナリを作成します。”login_url”へのPOSTリクエストの後、ステータスを取得します。r.status_code をチェックします。もしr.status_code!=200 の場合、ユーザ名またはパスワードに問題があります。
リクエストが成功したらその後のリクエストのためにヘッダとcokkieをキャプチャします。cookies=session.cookiesとheaders=session.headersを渡すことにより 、後続のrequest.session呼び出しを行うことができます。
import requests
def login_djangosite():
next_url = "/"
login_url = "http://localhost:8888/accounts/login?next=/"
session = requests.Session()
r = session.get(login_url)
form_data = dict(username="[your hue username]",password="[your hue password]",
csrfmiddlewaretoken=session.cookies['csrftoken'],next=next_url)
r = session.post(login_url, data=form_data, cookies=dict(), headers=dict(Referer=login_url))
# check if request executed successfully?
print r.status_code
cookies = session.cookies
headers = session.headers
r=session.get('http://localhost:8888/metastore/databases/default/metadata',
cookies=session.cookies, headers=session.headers)
print r.status_code
# check metadata output
print r.text