Help us understand the problem. What is going on with this article?

【Python】Qiita APIの認証情報がOSの環境変数に "あれば" セットしてrequestsで問い合わせる

More than 1 year has passed since last update.

結論

1. os.getenv('KEY') はOSに指定された環境変数がセットされていないとNoneを返す

os.getenv(key, default=None) の形式のため、第2引数の default に何かセットされている場合は除く。

https://docs.python.org/ja/3/library/os.html#os.getenv

2. Qiita APIはリクエストヘッダーが空 {} でもリクエストを受け付ける

ということは、始めに 空のdictをリクエストヘッダーとして使い、

  • 環境変数にアクセストークン(認証情報)がセットされていなければ: そのまま未認証で
  • セットされていれば: Authorization キーをdictにセットして認証済で

APIを使うことができる。

リクエストのコード例

ユーザー情報を取得する GET /api/v2/users/:user_id を使ってみます。

アクセストークン の指定方法は Bearer の後に続けば良いため 文字列を結合するだけでOKです。

import requests
import os

# tokenの読み込み
qiita_token = os.getenv('QIITA_TOKEN')
qiita_request_header = {}
if qiita_token:
    print("環境変数の QIITA_TOKEN で認証します")
    qiita_request_header = {'Authorization': 'Bearer ' + qiita_token}

api_url = 'https://qiita.com/api/v2/users/ysd_marrrr'
result = requests.get(api_url, headers=qiita_request_header)

# ヘッダー
print(result.headers)

# レート
print('残り {} 回 / {}'.format(result.headers['rate-remaining'], result.headers['rate-limit']))

# ボディ
print(result.text)

認証情報のセットの仕方

Qiitaの [設定] -> [アプリケーション] -> [個人用アクセストークン] の「新しくトークンを発行する」から認証情報を取得してください。

#この例だと read_qiita のスコープのみで十分です。

image.png

bash

export QIITA_TOKEN="tokentokentoken"

Python

import os
os.environ.set('QIITA_TOKEN', 'tokentokentoken')
ysd_marrrr
( 'ω')「ワーイウゴイター」と言っている内はレベルが低いのか…。 小学生からHTML, 高専・大学はスマートフォンアプリを作ったりしたので、HTML/CSS/JS/Vue.jsとかPHP, Node.jsとかiOS/Androidとか「目に見えるもの」にお熱。他はLinux/AWS/Python/シェルスクリプト…などなど。 動かす・達成させるがモチベーションです٩(’ω’)۶
https://www.y-mix.dev/
opst
情報技術と社員力でお客様を成功に導く Make IT Your Success
https://www.opst.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした