Pythonを使用してoauth2 access_tokenを取得するにはどうすればいいですか?質問する

Pythonを使用してoauth2 access_tokenを取得するにはどうすればいいですか?質問する

あるプロジェクトで誰かが私にこのデータをくれました。私はこれをテスト目的で Postman で使用しました。

Postman ではこれは完璧に機能します。

認証URL:https://api.example.com/oauth/access_token
アクセストークンURL:https://api.example.com/アクセストークン
クライアントID: abcde
クライアントシークレット: 12345
トークン名: access_token
付与タイプ: クライアント資格情報

必要なのはアクセス トークンを取り戻すことだけです。

アクセストークンを取得したら、続行できます。

私はすでにいくつかの Python パッケージとカスタム コードを試しましたが、どうやらこの一見単純なタスクが本当に頭痛の種になり始めています。

私が試した例を1つ挙げます:

import httplib
import base64
import urllib
import json

def getAuthToken():
    CLIENT_ID = "abcde"
    CLIENT_SECRET = "12345"
    TOKEN_URL = "https://api.example.com/oauth/access_token"

    conn = httplib.HTTPSConnection("api.example.com")

    url = "/oauth/access_token"

    params = {
        "grant_type": "client_credentials"
    }

    client = CLIENT_ID
    client_secret = CLIENT_SECRET

    authString = base64.encodestring('%s:%s' % (client, client_secret)).replace('\n', '')

    requestUrl = url + "?" + urllib.urlencode(params)

    headersMap = {
        "Content-Type": "application/x-www-form-urlencoded",
        "Authorization": "Basic " + authString
    }

    conn.request("POST", requestUrl, headers=headersMap)

    response = conn.getresponse()

    if response.status == 200:
        data = response.read()
        result = json.loads(data)

        return result["access_token"]

次に、これを取得します。

import requests
import requests.auth

CLIENT_ID = "abcde"
CLIENT_SECRET = "12345"
TOKEN_URL = "https://api.example.com/oauth/access_token"
REDIRECT_URI = "https://www.getpostman.com/oauth2/callback"

def get_token(code):
    client_auth = requests.auth.HTTPBasicAuth(CLIENT_ID, CLIENT_SECRET)
    post_data = {"grant_type": "client_credentials",
                 "code": code,
                 "redirect_uri": REDIRECT_URI}
    response = requests.post(TOKEN_URL,
                             auth=client_auth,
                             data=post_data)
    token_json = response.json()
    return token_json["access_token"]

これが機能する場合、codeパラメータに何を入力すればよいですか

誰かがここで私を助けてくれることを本当に願っています。

前もって感謝します。

ベストアンサー1

使用する前に、pip install requests

import requests


def get_access_token(url, client_id, client_secret):
    response = requests.post(
        url,
        data={"grant_type": "client_credentials"},
        auth=(client_id, client_secret),
    )
    return response.json()["access_token"]


get_access_token("https://api.example.com/access_token", "abcde", "12345")

client_idクライアントを識別し、 はclient_secretクライアントを認証します。 はaccess_token後続のリクエストに対して取得されます。

別名もいくつかあります:

  • client_id: Salesforce の「コンシューマー キー」
  • client_secret: Salesforce の「コンシューマ シークレット」
  • access_token: OAuthトークン

おすすめ記事