Php 实体主体应该是正确嵌套的资源属性名称/值对

Php 实体主体应该是正确嵌套的资源属性名称/值对,php,curl,box-api,Php,Curl,Box Api,我是一个使用PHP cURL的初学者,我正在尝试使用Box.com API 2.0,它使用oAuth。 我试图返回有关用户的基本信息。这是我的密码: $box_1 = curl_init("https://api.box.com/2.0/users/me"); curl_setopt($box_1, CURLOPT_HTTPHEADER, "Authorization: Bearer token_was_here"); curl_setopt($box_1, CURLOPT_RETURNTRAN

我是一个使用PHP cURL的初学者,我正在尝试使用Box.com API 2.0,它使用oAuth。 我试图返回有关用户的基本信息。这是我的密码:

$box_1 = curl_init("https://api.box.com/2.0/users/me");
curl_setopt($box_1, CURLOPT_HTTPHEADER, "Authorization: Bearer token_was_here");
curl_setopt($box_1, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($box_1, CURLOPT_POSTFIELDS, "fields=id,name,login");
$box_curl1 = curl_exec($box_1);
curl_close($box_1);
当我运行此程序时,我得到以下错误:
{“type”:“error”,“status”:400,“code”:“bad_request”,“context_info”:{“errors”:[{“reason”:“invalid_parameter”,“name”:“entity body”,“message”:“invalid value”fields=id,name,login”。entity body应该是一个正确嵌套的资源属性名称\/值对“}],“help_url”:“http:\/\/developers.box.com\/docs\/\35; errors”,“message:“请求错误”,“请求id:“请求id在此处”}


当我删除第4行时,我没有得到任何响应。

字段=id、name、login应该在查询字符串中,而不是在请求正文中。

字段=id、name、login应该在查询字符串中,而不是在请求正文中。

好吧,我找到了

我的“访问令牌”已过期,由于我没有选择输出标题,我从未发现这一点

我还稍微修改了我的代码:

$token = "token here";
$box_1 = curl_init();
curl_setopt($box_1, CURLOPT_URL, "https://api.box.com/2.0/users/me?fields=id");
curl_setopt($box_1, CURLOPT_HTTPHEADER, array("Authorization: Bearer ".$token));
curl_setopt($box_1, CURLOPT_HTTPGET, TRUE);
curl_setopt($box_1, CURLOPT_RETURNTRANSFER, true);
$box_curl1 = curl_exec($box_1);
curl_close($box_1);

好吧,我知道了

我的“访问令牌”已过期,由于我没有选择输出标题,我从未发现这一点

我还稍微修改了我的代码:

$token = "token here";
$box_1 = curl_init();
curl_setopt($box_1, CURLOPT_URL, "https://api.box.com/2.0/users/me?fields=id");
curl_setopt($box_1, CURLOPT_HTTPHEADER, array("Authorization: Bearer ".$token));
curl_setopt($box_1, CURLOPT_HTTPGET, TRUE);
curl_setopt($box_1, CURLOPT_RETURNTRANSFER, true);
$box_curl1 = curl_exec($box_1);
curl_close($box_1);

我试着像这样添加它
$box\u 1=curl\u init(“https://api.box.com/2.0/users/me?fields=id是的,我添加了这个:
curl\u setopt($box\u 1,CURLOPT\u HTTPGET,TRUE)
你能提供一个HTTP跟踪吗?如果你在Windows上,这是一个很好的工具。我试着像这样添加它
$box\u 1=curl\u init(“https://api.box.com/2.0/users/me?fields=id是的,我添加了这个:
curl\u setopt($box\u 1,CURLOPT\u HTTPGET,TRUE)
您能提供一个HTTP跟踪线路上发生了什么吗?如果您使用Windows,这是一个很好的工具。我很高兴您已经脱离困境,但这不是您最初问题的原因。如果您的访问令牌在第一次请求时已过期,您将得到401个未经授权的响应,而不是400个错误的请求。是的,我最初也忘了将其更改为GET请求:)太好了!这现在有意义了。:我很高兴你脱离困境,但这不是你最初问题的原因。如果你的访问令牌在发出第一个请求时已过期,你将得到401个未经授权的响应,而不是400个错误的请求。是的,我收到了最初也忘了将其更改为GET请求:)太好了!现在有意义了。:D