benten login

目的

  • ログイン認証を行います。

概要

  • BENTENで各種APIでの利用を行うために認証手続きを行います。
  • 所定のアカウント名とパスワードを用いてログインを行います。
    • データ登録を行う際にはデータ登録用のグループアカウント(ビームラインアカウント等)を使います。
      • 例: BL14B2
    • データ検索・取得を行う際にはユーザー用アカウントを使ってもよいです。
      • 例: 1234567
  • ログインの結果、取得したアクセストークンは他のBENTENのAPIを利用する際に要求されます。

Warning

アクセストークンの有効期限は1日です。1日以上ログインを有効にする際にはリフレッシュトークンを用いてrefresh_tokenのAPIによりアクセストークンを再生成し、アクセストークンの有効期限の延長を行ってください。

利用例

  • Help
$ benten.py login -h
usage: benten login [-h] --username USERNAME [--password PASSWORD]

optional arguments:
  -h, --help            show this help message and exit
  --username USERNAME, -u USERNAME
                        username
  --password PASSWORD, -p PASSWORD
                        password
  • アクセストークン取得 : 手動でパスワード入力(推奨)
$ benten.py login -u BL14B2
input password: xxxxx
### benten login ###
==> response (output to /xxxxx/.benten/auth_info.json)
--> filename = /xxxxx/.benten/auth_info.json
{
    "access_token":"37d1de33b6ed4ce59ff8c114fd17c5de",
    "refresh_token":"28fa9fb14dd04912b33ef1a14bbb56dc",
    "expires_in":86400,
    "expires_time":1552440434
}
  • アクセストークン取得 : 引数でパスワード入力(非推奨)
$ benten.py login -u BL14B2 -p xxxxx
### benten login ###
==> response (output to /xxxxx/.benten/auth_info.json)
--> filename = /xxxxx/.benten/auth_info.json
{
    "access_token":"13a9572ae39a469e853b824b2c189701",
    "refresh_token":"9506da2775bb486da72c979ca89dcdce",
    "expires_in":86400,
    "expires_time":1552440570
}

Pythonモジュールとの対応

#!/usr/bin/env python
'''
  example: login

  usage: python benten_login.py [username] [password]

'''

import benten_client

import argparse
from logging import getLogger, StreamHandler, DEBUG
logger = getLogger(__name__)
handler = StreamHandler()
handler.setLevel(DEBUG)
logger.setLevel(DEBUG)
logger.addHandler(handler)
logger.propagate = False

# ... parameters

parser = argparse.ArgumentParser(description="example: login")
parser.add_argument("username", help="username")
parser.add_argument("password", help="password")

args = parser.parse_args()

logger.debug("# benten login with username, password")
username = args.username
password = args.password

v = {}
v["username"] = username
v["password"] = password

repo = benten_client.Repository() 
ret_dict = repo.auth.login.post(**v)

# save auth : required to fetch access_token/refresh_token after
benten_client.save_auth(ret_dict)