使用 php 从 BOX API 获取访问令牌?
Get acess token from BOX API using php?
我正在尝试从框 API 获取访问令牌,当我在终端 运行 上时,以下 curl 正在工作
curl https://api.box.com/oauth2/token \
-d 'grant_type=authorization_code&code=CODE&client_id=CLIENT_ID&client_secret=secret_ID' \
-X POST # This is working.
上面一个是有效的,但是我用 PHP 尝试过同样的事情,但是它抛出了以下错误 {"error":"invalid_request","error_description":"Invalid grant_type parameter or parameter missing"}1
我试过以下代码
$access_token_url = "https://api.box.com/oauth2/token";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $access_token_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'grant_type'=>'authorization_code',
'code'=>'code',
'client_id'=>'id',
'client_secret'=>'secret'
));
$response = curl_exec($ch);
curl_close($ch);
我不知道实际问题是什么。
您正在一起发送不同的参数。 -d option sends a POST request so you cannot mix all params in a GET. Do the request as in the provided example:
curl https://api.box.com/oauth2/token \
-d 'grant_type=authorization_code' \
-d 'code=<MY_AUTH_CODE>' \
-d 'client_id=<MY_CLIENT_ID>' \
-d 'client_secret=<MY_CLIENT_SECRET>' \
-X POST
必须设置为 POST
参数的数据,而不是 HEADER
参数
$access_token_url = "https://api.box.com/oauth2/token";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $access_token_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'grant_type'=>'authorization_code',
'code'=>'code',
'client_id'=>'id',
'client_secret'=>'secret'
]));
$response = curl_exec($ch);
curl_close($ch);
我认为这是因为命令行示例正在发出 POST 请求,但 PHP curl 请求不是。希望下面的代码能让您走上正轨。
<?php
$access_token_url = "https://api.box.com/oauth2/token";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $access_token_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
array(
'grant_type'=>'authorization_code',
'code'=>'code',
'client_id'=>'id',
'client_secret'=>'secret'));
$response = curl_exec($ch);
curl_close($ch);
?>
我正在尝试从框 API 获取访问令牌,当我在终端 运行 上时,以下 curl 正在工作
curl https://api.box.com/oauth2/token \
-d 'grant_type=authorization_code&code=CODE&client_id=CLIENT_ID&client_secret=secret_ID' \
-X POST # This is working.
上面一个是有效的,但是我用 PHP 尝试过同样的事情,但是它抛出了以下错误 {"error":"invalid_request","error_description":"Invalid grant_type parameter or parameter missing"}1
我试过以下代码
$access_token_url = "https://api.box.com/oauth2/token";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $access_token_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'grant_type'=>'authorization_code',
'code'=>'code',
'client_id'=>'id',
'client_secret'=>'secret'
));
$response = curl_exec($ch);
curl_close($ch);
我不知道实际问题是什么。
您正在一起发送不同的参数。 -d option sends a POST request so you cannot mix all params in a GET. Do the request as in the provided example:
curl https://api.box.com/oauth2/token \
-d 'grant_type=authorization_code' \
-d 'code=<MY_AUTH_CODE>' \
-d 'client_id=<MY_CLIENT_ID>' \
-d 'client_secret=<MY_CLIENT_SECRET>' \
-X POST
必须设置为 POST
参数的数据,而不是 HEADER
参数
$access_token_url = "https://api.box.com/oauth2/token";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $access_token_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'grant_type'=>'authorization_code',
'code'=>'code',
'client_id'=>'id',
'client_secret'=>'secret'
]));
$response = curl_exec($ch);
curl_close($ch);
我认为这是因为命令行示例正在发出 POST 请求,但 PHP curl 请求不是。希望下面的代码能让您走上正轨。
<?php
$access_token_url = "https://api.box.com/oauth2/token";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $access_token_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
array(
'grant_type'=>'authorization_code',
'code'=>'code',
'client_id'=>'id',
'client_secret'=>'secret'));
$response = curl_exec($ch);
curl_close($ch);
?>