あるプロジェクトで誰かが私にこのデータをくれました。私はこれをテスト目的で 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トークン