PythonとジョーシスのAPIを使ってメンバー一覧を取得してみた。
修正履歴
・2024/01/26:初版
やること
ジョーシスのAPIを使って管理下のメンバー一覧を取得してみました。
事前準備
コードを書く前にジョーシス側の準備が必要になります。
以下のことが必要です。
・APIユーザーキーを作成。
・APIシークレットキーを作成。
これらのやり方は以下のジョーシスのドキュメントに記載されていますので、参照しつつ作成していきましょう。
コードを書く前に
必要な関数をpip installしておきましょう。
pip install --upgrade requests
コードを書く
では早速コードを書いていきましょう!
main関数の雛形
まずは雛形から。
モジュールとしての再利用性のためこのように書くことが推奨されていますので、それに従いましょう。
mainの上で行われているimportはこれから利用する関数群を呼び出しています。
import requests
import json
def main():
# メインのプログラムのロジック
if __name__ == '__main__':
main()
Token呼び出し
ではmainの中を書いていきましょう。
まずはAPIを使えるようにするためにAPIユーザーキーとAPIシークレットキーを使ってTokenを取得する処理です。
{xxxx}で記述しているところは各社に合わせて書き換えて下さい。
(注意)各所にprint文を入れているのはデバッグのためです。
またテストなのでキー等をコードに直接書いていますが、業務で使う際にはファイルに格納するなり工夫をして下さい。
import requests
import json
def main():
print('開始-main')
print('開始-Token取得')
str_url_api_base = "https://developer.josys.it/api"
str_url_token = "/v1/oauth/tokens"
str_url_auth = str_url_api_base + str_url_token
print('URL:[' + str_url_auth + ']')
str_json_token = {
'grant_type': 'client_credentials',
'api_user_key': 'xxxx',
'api_user_secret': 'xxxx'
}
try:
str_res_token = requests.post(str_url_auth, json=str_json_token)
except Exception as e:
print(f'Token取得中にエラーが発生しました: {str(e)}')
#print('return_all:[' + str_res_token.text + ']')
json_response_token = str_res_token.json()
print('return_token_type:[' + json_response_token['token_type'] + ']')
print('return_expires_in:[' + str(json_response_token['expires_in']) + ']')
print('return_id_token:[' + json_response_token['id_token'] + ']')
print('終了-Token取得')
print('終了-main')
if __name__ == '__main__':
main()
ユーザー一覧取得
Tokenが呼び出せたら、今度はそのTokenを使ってユーザー一覧を取得してみましょう。
今回は姓と名とメールアドレスを出力しています。
import requests
import json
def main():
print('開始-main')
print('開始-Token取得')
・・・
print('終了-Token取得')
print('開始-ユーザー一覧取得')
str_url_token = "/v1/user_profiles"
str_url_auth = str_url_api_base + str_url_token
print('URL:[' + str_url_auth + ']')
str_json_userlist = {
'page': 1,
'per_page': 5,
'sort_by': 'user_id',
'sort_direction': 'asc'
}
str_json_headers = {
'Authorization': 'Bearer ' + json_response_token['id_token'],
'Content-Type': 'application/json'
}
str_res_userlist = requests.get(str_url_auth, headers=str_json_headers , params=str_json_userlist)
print('return_all:[' + str_res_userlist.text + ']')
json_response_userlist_headers = str_res_userlist.headers
json_response_userlist_body = str_res_userlist.json()
print('return_header_Content-Type:[' + json_response_userlist_headers.get('Content-Type') + ']')
print('return_header_x-page:[' + str(json_response_userlist_headers.get('x-page')) + ']')
for jsonObj in json_response_userlist_body['data']:
print(jsonObj.get('last_name'))
print(jsonObj.get('first_name'))
print(jsonObj.get('email'))
print('終了-ユーザー一覧取得')
print('終了-main')
if __name__ == '__main__':
main()
実行結果
これで文字列として姓と名とメールアドレスを取得できたかと思います。
(testxxx) xxxx % python3 testxxx.py
山田
一郎
ichiro.yamada@xxx.co.jp
上田
花子
hanako.ueda@xxx.co.jp
(testxxx) xxxx %
あとはこれを例えばなにかの抜け漏れ防止に利用したりできるかなと思います。
今後はAPIをさらに発展させ、Saasアカウント発行やアカウント削除をできるようになるとありがたいですね。
以上
この記事が気に入ったらサポートをしてみませんか?