クリプト

【Python】ALISの「個人認証が必要なAPI」を利用してみよう!

ゆうき's icon'
  • ゆうき
  • 2018/09/16 01:40
Content image


リンク:

アリスブログ「ALISのAPI」を使用する方法まとめ > 当記事


◆ 【Python】ALISの「個人認証が必要なAPI」を利用してみよう!

『ALISのAPI』の個人認証(AWSSRP)の準備について」の続き。

ここでは、前回のサンプルソースとは別のものを作って、それを実行してみます。


○ 関連記事

(個人認証系のAPIを動作させる時は、上記の記事に書かれている「準備」を先に行っておく必要があります



◆ ログインユーザーの情報を取得するプログラム

import urllib.request
import json
import pprint
from warrant.aws_srp import AWSSRP # warrantのインストールが必要
from getpass import getpass

# ユーザーIDと、パスワードの設定
user_name1 = 'yuuki'
password1 = getpass('Your ALIS Password:')


# 固定の値
POOL_ID = 'ap-northeast-1_HNT0fUj4J'
POOL_REGION = 'ap-northeast-1'
CLIENT_ID = '2gri5iuukve302i4ghclh6p5rg'


# アクセストークンの獲得
aws = AWSSRP(username = user_name1, password = password1, pool_id = POOL_ID, client_id = CLIENT_ID, pool_region = POOL_REGION)
tokens = aws.authenticate_user()
id_token = tokens['AuthenticationResult']['IdToken']


url_name1 = 'https://alis.to/api/me/info'
method1 = 'GET'
headers1 = {'Authorization': id_token}

request1 = urllib.request.Request(url_name1, None, headers = headers1 , method = method1)

with urllib.request.urlopen(request1) as cm_data1:
    response_data1 = json.loads(cm_data1.read().decode("utf-8"))

pprint.pprint(response_data1)


input('Enterキーで終了')

ログインユーザーの情報の取得は、個人認証を用いるAPIの中では、かなり簡単に作れるコードだったので、起用することにしました。


○ 説明!

from warrant.aws_srp import AWSSRP

「from」は、モジュール内に含まれている関数などを、直接使用できるようにするプログラムです。

(ここでは、「warrant.aws_srp」内にある「AWSSRP」という関数をそのまま利用可能にしています)


一例: 「json.loads」を使用したい場合

import json

→ 宣言文は、json.loads()


form json import loads

→ 宣言文は、loads()

(json.loads()と同じです)


ただし、名前の衝突(同じ名前の関数を使用してしまう行為)には気をつけておきたいです。



from getpass import getpass

getpassは、文字を隠した状態で入力するプログラムです。

これを用いれば、パスワードの入力の時に、パスワード文を露呈させなくて済みます。


※ Windows10での実行の際は、「パスワードをコピー」 → 「コマンドプロンプト内で右クリック」 → 「Enterキー」で、パスワードを入力することができます。



# ユーザーIDと、パスワードの設定
user_name1 = 'yuuki'
password1 = getpass('Your ALIS Password:')

ALISの「ユーザーID」と「パスワード」を設定する部分です。

プログラムを動作させる際に、パスワードの入力が面倒だと感じる場合は、「getpass('Your ALIS Password:')」→「'任意のパスワード'」に変更してしまうのもいいと思います。



# 固定の値
POOL_ID = 'ap-northeast-1_HNT0fUj4J'
POOL_REGION = 'ap-northeast-1'
CLIENT_ID = '2gri5iuukve302i4ghclh6p5rg'

AWSの「ALISの仮想サーバー」との接続に必要な変数。

この部分は、何もしなくて問題ありません。おまじないです。



# アクセストークンの獲得
aws = AWSSRP(username = user_name1, password = password1, pool_id = POOL_ID, client_id = CLIENT_ID, pool_region = POOL_REGION)
tokens = aws.authenticate_user()
id_token = tokens['AuthenticationResult']['IdToken']

「aws」に必要な情報を代入した後、

「aws.authenticate_user()」でAWSに接続して、情報(トークン、辞書型)を取得。

その後、取得したトークン内に含まれている「アクセストークン」を「id_token」にコピーするプログラムです。


以降、パスワードの通信は不要となり、獲得したアクセストークンでALISの認証を行います。



url_name1 = 'https://alis.to/api/me/info'
method1 = 'GET'
headers1 = {'Authorization': id_token}
request1 = urllib.request.Request(url_name1, None, headers = headers1 , method = method1)

「url_name1 」は、前々から使用している、ALISのAPIを呼び出すURLです。「APIドキュメント」から持ってきています。

「method1」は、「リクエストメソッド」かな。APIドキュメントに書かれている「リクエストメソッド」を記載すればOKです。


「headers1」は、ALISの個人認証に必要なアクセストークンを渡す変数です。変更不要。

そして、最後に「urllib.request.Request」を宣言して、「urllib.request.urlopen」に渡せる情報を設定しておきます。


with urllib.request.urlopen(request1) as cm_data1:
    response_data1 = json.loads(cm_data1.read().decode("utf-8"))

「with文」を使用して、ちょっとコンパクトにしてみました。

上記の文は、

cm_data1 = urllib.request.urlopen(request1)
response_data1 = json.loads(cm_data1.read().decode("utf-8"))
cm_data1.close

と同じ意味を持ちます。

前から使用しているコードですね。


※ urlopenの引数について

個人認証を用いないAPIの利用では、urlopen内に文字列(URL)を書き込んでいましたが、個人認証を用いるAPIでは、送信しなければならない情報があるので、「Request」でまとめたデータを投げています。

(urlopenは、「文字列」と「Request オブジェクト」のどちらを代入しても動作します)



pprint.pprint(response_data1)

最後に、受信したデータを表示します。


○ 実行結果

Content image

ログインユーザーの情報を取得することができました。



「『ALISのAPI』を使用する方法まとめ」に戻る




◆ 「ゆうき」のツイッター


公開日:2018/09/16
獲得ALIS:43.56
ゆうき's icon'
  • ゆうき
  • @yuuki

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
クリプト

【初心者向け】JPYCを購入して使ってみました!

Like token Tip token
30.03 ALIS
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

Like token Tip token
947.13 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

Like token Tip token
61.20 ALIS
Eye catch
クリプト

コインチェックに上場が決まったEnjin Coin(エンジンコイン)コインを解説

Like token Tip token
21.49 ALIS
Eye catch
クリプト

【第8回】あの仮想通貨はいま「テレグラム-TON/Gram」

Like token Tip token
69.90 ALIS
Eye catch
クリプト

Eth2.0のステークによるDeFiへの影響を考える。

Like token Tip token
44.10 ALIS
Eye catch
クリプト

【初心者向け】$MCHCの基本情報と獲得方法

Like token Tip token
32.32 ALIS
Eye catch
クリプト

NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

Like token Tip token
121.79 ALIS
Eye catch
クリプト

Uniswap v3を完全に理解した

Like token Tip token
18.92 ALIS
Eye catch
クリプト

【DeFi】複利でトークンを運用してくれるサイト

Like token Tip token
54.01 ALIS
Eye catch
クリプト

Polygon(Matic)で、よく使うサイト(DeFi,Dapps)をまとめてみた

Like token Tip token
236.30 ALIS