odr*_*ja0 3 php python oauth-2.0
我是 Python 脚本编写的初学者,并且有一个问题。
我正在尝试将 PHP 代码重写为 Python,以从 API 获取访问令牌以供进一步使用。
##/* Request for access token */
$base_url = "myurl";
$client_id="1234";
$client_secret="5678";
$client_details = "${client_id}:${client_secret}";
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => "Content-Type: application/x-www-form-urlencoded\r\n" .
"Authorization : Basic $client_details\r\n",
'content' => "grant_type=client_credentials"
)
));
$response = file_get_contents($base_url.'/apis/oauth2/Token.php', false, $context);
$res = json_decode($response);
$token = $res->access_token;
Run Code Online (Sandbox Code Playgroud)
这就是我在 Python 中尝试做的事情。
我的Python代码是:
import urllib
import sys
import json
import requests
base_url = 'myurl'
client_id='1234'
client_secret='5678'
response = requests.post(base_url+'/apis/oauth2/Token.php',
auth=(client_id, client_secret))
print(response.json())
Run Code Online (Sandbox Code Playgroud)
但这不起作用
Python 正在返回:
{'error': 'invalid_request', 'error_description': 'The grant type was not specified in the request'}
Run Code Online (Sandbox Code Playgroud)
我知道我丢失了 PHP 代码中上下文变量的所有内容。你知道是否有一个Python方法可以在PHP中创建像stream_context_create这样的上下文,或者你能给我一些提示我该怎么做吗?
我设法解决了我的问题。这是代码:
import urllib
import sys
import json
import requests
base_url = 'https://myurl.com'
client_id='1234'
client_secret='5678'
grant_type='client_credentials'
response = requests.post(base_url+'/apis/oauth2/Token.php',
auth=(client_id, client_secret),
data={'grant_type':grant_type,'client_id':client_id,'client_secret':client_secret})
print(response.json())
Run Code Online (Sandbox Code Playgroud)