适配Diaspora 0.7.*的消息发布API代码调整求助
适配Diaspora 0.7.*版本的API发布消息代码调整方案
我开发了一个用于在Diaspora上发布消息的API,该API在Diaspora 1.*版本中运行正常,但在Diaspora 0.7.*版本中调用时出现“Page Not Found”错误。我推测是请求URL不正确,虽已获取access_token,但未找到正确的URL。以下是我的代码:
$DIASPORA_FR_URL = "https://diasporabr.com.br/"; $accessToken = "my_access_token"; $url = "{$DIASPORA_FR_URL}api/v1/posts?access_token=$accessToken"; $params = [ "body" => "test", "public" => true ]; $data = http_build_query($params); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); if (curl_errno($ch)) { $result = curl_error($ch); } curl_close($ch);
调整方案
Diaspora 0.7.*版本的API路由、认证方式和参数格式与1.*版本差异较大,需做以下修改:
- 修正请求URL:0.7.*版本没有
api/v1/posts接口,发布状态消息的正确路径是status_messages - 调整认证方式:不能在URL中拼接
access_token,需通过Authorization请求头传递,格式为Bearer {access_token} - 修改参数结构:
- 文本内容需包裹在
status_message[text]键下,而非原代码的body - 公开可见设置需通过
aspect_ids参数传入数组["public"],替代原代码的public => true
- 文本内容需包裹在
调整后的完整代码
$DIASPORA_FR_URL = "https://diasporabr.com.br/"; $accessToken = "my_access_token"; // 0.7.*版本的正确接口路径 $url = "{$DIASPORA_FR_URL}status_messages"; // 适配0.7.*的参数结构 $params = [ "status_message[text]" => "test", "aspect_ids" => ["public"] ]; $data = http_build_query($params); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 添加Authorization头传递access_token curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer $accessToken" ]); $result = curl_exec($ch); if (curl_errno($ch)) { $result = curl_error($ch); } curl_close($ch);
补充说明
- 确保你的
access_token拥有发布状态消息的权限,否则会返回权限错误 - 0.7.*版本的API参数严格遵循命名空间结构,所有与状态消息相关的字段都需要放在
status_message前缀下
内容的提问来源于stack exchange,提问作者Scipius2012
相关产品推荐
相关产品推荐

