php - 使用 PHP cURL 在/oauth2/access_token 上 POST 数据并以 json 形式获取数据

标签 php json api curl oauth-2.0

我已按照 Path API 进行操作关于如何验证用户。在教程身份验证过程中,用户开始重定向到以下 URL 并提示授予访问权限:

https://partner.path.com/oauth2/authenticate?response_type=code&client_id=THE_CLIENT_ID

之后,服务器将通过 URL 地址以授权代码形式给出响应(我已完成此步骤并获得代码)。

根据文档的解释,代码应该使用 /oauth2/access_token 与客户端 ID 和客户端 key (获取 access_token)交换为访问 token

但是我不知道如何通过 cURL 将数据 POST 到服务器,我已经尝试了很多 curl_setopt() 选项和组合,但它仍然没有给我任何结果。

从文档中,请求如下所示:

POST /oauth2/access_token HTTP/1.1
Host: partner.path.com
Content-Type: application/x-www-form-urlencoded
Content-Length: <LENGTH>

grant_type=authorization_code&client_id=CLIENT&client_secret=SECRET&code=CODE

cURL 格式如下:

curl -X POST \
     -F 'grant_type=authorization_code' \
     -F 'client_id=CLIENT_ID' \
     -F 'client_secret=CLIENT_SECRET' \
     -F 'code=CODE' \
     https://partner.path.com/oauth2/access_token

服务器将给出如下响应:

HTTP/1.1 201 CREATED
Content-Type: application/json
Content-Length: <LENGTH>

{
    "code": 201,
    "type": "CREATED"
    "reason": "Created",
    "access_token": <ACCESS_TOKEN>,
    "user_id": <USER_ID>,
}

最佳答案

要使用 cURL 在 PHP 中执行 POST 请求,您可以执行以下操作:

$handle = curl_init('https://partner.path.com/oauth2/access_token');
$data = array('grant_type' => 'authorization_code', 'client_id' => 'CLIENT', 'client_secret' => 'SECRET', 'code' => 'CODE');
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
$resp = curl_exec($handle);

然后,您可以使用 json_decode($json_encoded) 从服务器响应中获取关联数组。

关于php - 使用 PHP cURL 在/oauth2/access_token 上 POST 数据并以 json 形式获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31416209/

相关文章:

java - 在 FFMPEG 写入文件时读取文件

ruby-on-rails - 如何为rails中的单个请求跨模型设置变量?

api - 网络 API odata : $select not working

带有德语单词及其文章的数据库

php - 使用 foreach 2 级数组循环进行多次插入

php - 可恢复的 fatal error : Object of class PDOStatement could not be converted to string in - index. php 第 23 行

java - 使用包含变量类型字段的 Gson 反序列化 JSON 响应

java - jackson :防止序列化通过序列化 HashMap 获得的json字符串

c - 试图弄清楚如何通过 c 中的 lib curl 发送 json 数据

php - 我如何在查询之间进行此操作以在同一列中查找不同的值?