Disqus API:以访客身份创建评论

时间:2013-03-14 17:54:25

标签: php curl disqus

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

  

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

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

    要创建匿名评论,只需传递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 create post error),但建议的回答是使用OAuth并进行身份验证。但我不想进行身份验证,我想发送一个带有姓名和电子邮件的访客评论。 哪里我错了?

非常感谢您的回复。

3 个答案:

答案 0 :(得分:3)

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

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

    为了说清楚,您需要拥有/审核网站,以便通过API发布匿名评论。此外,请确保在执行此操作时传递其他strict=1参数。默认情况下,任何可选参数都会丢弃错误,因此如果author_name和author_email发生错误,您可能会遇到评论自己发布的情况。

答案 1 :(得分: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 call headers showing the api_key

答案 2 :(得分: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 recipes,在初学者部分的自述文件中,它引用了一个片段

  

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

但无法找到该代码段。所以我查看提交并找到"Delete obsolete guest comment creation script"。我是否应该将此作为暗示,现在不能通过API创建作为访客的评论?如果是这样,Disqus可能会更新您的文档。

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