首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dropbox令牌验证

Dropbox令牌验证
EN

Stack Overflow用户
提问于 2015-12-12 05:12:19
回答 1查看 841关注 0票数 0

这个问题来自我的前一次。我想通过调用用法 API函数来执行基本的令牌身份验证。我试过了

代码语言:javascript
复制
 $headers = array("Authorization: Bearer  token",
                 "Content-Type:application/json");
 $ch = curl_init('https://api.dropboxapi.com/2/users/get_space_usage/');
 curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
 curl_setopt($ch,CURLOPT_POST,true);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
 $response = curl_exec($ch);

 curl_close($ch);
 echo $response;

实际上,文档并没有指出提供内容类型头是必要的。但是,如果没有标头,我就会得到消息。

错误的HTTP“内容-类型”标题:“application/x form-urlencoded”。期待一个“申请/json”,.

输入标题但不提供POST字段会产生另一个错误。

请求主体:无法将输入解码为JSON

仅仅提供一些虚拟的post数据,curl_setopt($ch,CURL_POSTFIELDS,json_encode(array('a'=>1)));并没有做任何改变这种情况的事情。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-12 05:57:24

文档并不表示Content-Type头是预期的,因为这个端点不接受任何参数,因此不需要任何实体,因此没有可以通过Content-Type头描述的内容。下面是一个工作命令行curl示例,根据文档:

代码语言:javascript
复制
curl -X POST https://api.dropboxapi.com/2/users/get_space_usage \
    --header "Authorization: Bearer <ACCESS_TOKEN>"

在PHP中将其转换为curl将涉及确保PHP也不会发送Content-Type头。默认情况下,它显然会发送"application/x-www-form-urlencoded",但API不接受这一点。如果确实设置了"application/json",API将尝试将主体解释为“application/JSON”,但无法这样做,因为它不是有效的JSON,因此会失败。

显然,PHP中有卷曲的头并不容易(或者不可能),因此可以设置"application/json",但提供有效的JSON,例如"null“。下面是修改后的代码版本:

代码语言:javascript
复制
<?php

$headers = array("Authorization: Bearer <ACCESS_TOKEN>",
                 "Content-Type: application/json");

$ch = curl_init('https://api.dropboxapi.com/2/users/get_space_usage');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "null");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

curl_close($ch);
echo $response;

?>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34236552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档