4

我正在尝试使用 Disqus API 将帖子添加到现有讨论/论坛。在文档中,我可以读到我可以作为访客发送评论而无需身份验证。文档是这样说的: http ://disqus.com/api/docs/posts/create/

在两种情况下允许匿名评论:

  1. 您正在使用旧版身份验证和您的密钥
  2. 您正在使用您的公钥,您来自经过验证的推荐人,您未经身份验证,并且您尝试在其上创建帖子的论坛列在应用程序受信任的论坛中。

要创建匿名评论,只需传递 author_email 和 author_name 以及可选的 author_url 参数。

所以我使用这段代码在 PHP 中创建注释。(我使用了一个非常简单的 cURL 类,但问题不存在,因为我在 disqus.com/api 的控制台中得到了相同的类)

$curl = new Curl(1); 

$curl->addPostVar('thread','THREAD_ID');
$curl->addPostVar('message','Text message');
$curl->addPostVar('author_email','My email');
$curl->addPostVar('author_name','My name');
$curl->addPostVar('api_secret','My application secret API key');

echo $curl->exec('https://disqus.com/api/3.0/posts/create.json');

但我通过 JSON 得到错误

{"code": 4, "response": "You must be authenticated to perform this action"}

我知道其他人已经问过这个问题(Disqus API 创建发布错误),但建议的响应是使用 OAuth 并获得身份验证。但我不想进行身份验证,我想发送带有姓名和电子邮件的客人评论。我哪里错了?

非常感谢您的任何回复。

4

3 回答 3

3

要匿名评论,您不会传递任何访问令牌。但是,您必须确保满足以下条件:

  1. 在您的网站设置中,在“常规”下,确保选中“允许访客评论”
  2. 在您的 Disqus 网站设置中,在“高级”选项卡下,将您的域添加为受信任域
  3. 在您的 API 应用程序设置中,将受信任域中的相同域添加到 API 应用程序的受信任域列表中
  4. 当您发出 API 请求以发布评论时,请确保您的“referer”标头有一个位于这些受信任域之一上的域,并将“host”标头设置为“.disqus.com”以获得良好的衡量标准
  5. 使用您的公钥发出 API 请求

我能够按照这些规则成功提出请求。

为了清楚起见,您需要拥有/管理该站点才能通过 API 向其发布匿名评论。还要确保strict=1在执行此操作时传递一个附加参数。默认情况下,错误的任何可选参数都会被简单地删除,因此如果 author_name 和 author_email 抛出错误,您可能会遇到以自己身份发表评论的情况。

于 2013-03-15T15:20:23.457 回答
2

在检查了明显的事情(比如启用访客发帖和在论坛和应用程序设置中检查我的引用域)之后,我终于能够使用disqus-php库解决这个问题:

require __DIR__ . '/disqus-php-master/disqusapi/disqusapi.php';

$disqus = new DisqusAPI($secret_key);

print_r($disqus->posts->create(array(
    'thread' => $thread_id,
    'message' => $message,
    'author_name' => $author_name,
    'author_email' => $author_email,
    'api_key' => $api_key,
)));

问题是它与api_key您的 Disqus 应用程序设置中显示的公钥不同。实际上,我必须检查来自 Disqus Javascript 小部件的 AJAX 调用之一才能得到正确的api_key

Disqus AJAX 调用标头显示 api_key

于 2013-07-12T03:03:23.480 回答
1

我再次打开这个帖子,因为我有同样的问题,而且似乎还没有答案。

几天来,我一直在尝试以访客身份通过 API 发表评论。如果我阅读 API 文档,它说我必须传递消息、author_name、author_url、thread 和 api_key 才能做到这一点,但不能这样做。我总是得到

"Code: 12"

"This application cannot create posts on the chosen forum".

如果我通过 access_token 发送它可以工作,但它会以我的身份发布,这不是我想要的。

我还在 Github 上找到了Disqus 食谱,在初学者部分的自述文件中,它指的是一个片段

“创建访客评论:/php/create-guest-comment.php”

但找不到片段。所以我浏览了提交并找到“删除过时的客人评论创建脚本”。我是否应该将其视为 Disqus 目前无法通过 API 以访客身份创建评论的暗示?如果是这样,Disqus 可能会更新您的文档。

如果我做错了什么,我会很感激你指出我正确的方向。

于 2015-08-31T12:18:46.320 回答