メインコンテンツへスキップ
Server + API Architecture Scenario の一環として、Python でサーバープロセスを実装する方法を説明します。実装するソリューションについて詳しくは、Server + API Architecture Scenario のドキュメントを参照してください。 サーバープロセスの Python 実装の完全なソースコードは、この GitHub リポジトリ で確認できます。

アクセストークンを取得する

Auth0 の /oauth/token API エンドポイントに HTTP リクエストを送信するには、jsonurlliburllib2 ライブラリを使用します。 サンプル実装は次のとおりです。 これをテストするには、access_token 変数を出力するようにコードを変更し、python cron.py を実行します。

API を呼び出す

この実装では、次の手順を実行します。
  • タイムシートデータを含む JSON オブジェクトを作成し、timesheet 変数に代入します。
  • urllib2.Request を使用して、API URL と timesheet 変数の内容をリクエスト本文に追加します。
  • リクエストに Authorization ヘッダーを追加します。
  • Content-Type ヘッダーを application/json に設定します。
  • urllib2.urlopen を使用して API を呼び出し、基本的なエラー処理を追加します。json.loads を使用してレスポンスを取得し、コンソールに出力します。
以下は実装例です (一部のコードは簡潔にするため省略しています) 。
def main():
  # ライブラリのインポート - コード省略

  # 設定値 - コード省略

  # Auth0からアクセストークンを取得 - コード省略

  #新しいタイムシートをAPIに投稿
  timesheet = {'user_id': '007',
                          'date': '2017-05-10T17:40:20.095Z',
                          'project': 'StoreZero',
                          'hours': 5}
  req = urllib2.Request(api_url, data = json.dumps(timesheet))
  req.add_header('Authorization', 'Bearer ' + access_token)
  req.add_header('Content-Type', 'application/json')

  try:
    response = urllib2.urlopen(req)
    res = json.loads(response.read())
    print 'Created timesheet ' + str(res['id']) + ' for employee ' + str(res['user_id'])
  except urllib2.HTTPError, e:
    print 'HTTPError = ' + str(e.code) + ' ' + str(e.reason)
  except urllib2.URLError, e:
    print 'URLError = ' + str(e.reason)
  except httplib.HTTPException, e:
    print 'HTTPException'
  except Exception, e:
    print 'Generic Exception' + str(e)

# main()関数を呼び出す定型コード - コード省略
これをテストするには、API が実行中であることを確認し、python cron.py を実行してプロセスを開始します。 以上で完了です。