我正在尝试使用Disqus API将帖子添加到现有的讨论/论坛。 在文档中,我可以读到,作为访客,我可以在没有身份验证的情况下发送评论。 文档说明了这一点: http://disqus.com/api/docs/posts/create/
在两种情况下允许匿名评论:
- 您正在使用旧版身份验证和密钥
- 您使用的是公钥,来自经过验证的推荐人,您未经身份验证, 您尝试创建帖子的论坛列在应用程序可信论坛中。
醇>要创建匿名评论,只需传递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并进行身份验证。但我不想进行身份验证,我想发送一个带有姓名和电子邮件的访客评论。 哪里我错了?
非常感谢您的回复。
答案 0 :(得分:3)
要匿名发表评论,您不会传递任何访问权限令牌。但是,您必须确保满足以下条件:
我能够成功地遵循这些规则。
为了说清楚,您需要拥有/审核网站,以便通过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
:
答案 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可能会更新您的文档。
如果我做错了什么我会很感激你指出我正确的方向。