2013-03-14 92 views
4

我试图使用Disqus API来后添加到现有的讨论/论坛。 在文档中,我可以读取,我可以发送评论而无需身份验证,作为来宾。 文档说这个: http://disqus.com/api/docs/posts/create/Disqus API:创建评论为客人

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

  1. 您使用旧版权威性,和你的密钥
  2. 您正在使用你的公共密钥,您来自已验证的推荐人,您未经过身份验证, 以及您尝试创建帖子的论坛列在应用程序可信任论坛中。

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

所以我用这个代码创建一个PHP评论。 (我用一个很简单的卷曲类,但这个问题是不存在的,因为我得到同样的一个在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并获得身份验证。但我不想进行身份验证,我想发送带有姓名和电子邮件的来宾评论。 我哪里错了?

非常感谢您的任何答复。

回答

2

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

  1. 在您的网站设置,常规下,确保“允许客人意见”被选中
  2. 在你Disqus网站设置,高级选项卡下,将您的域名添加为受信域
  3. 在您的API应用程序设置中,将相同的域从受信任的域添加到API应用程序的受信任域列表中
  4. 当您发布API请求发布评论时, “referer”头域有一个位于其中一个可信域的域,并将“主机”头设置为“.disqus.com”测量
  5. 使用公钥

我是能够使请求成功地追踪这些规则使API请求。

只是要清楚,你就需要自己/中度部位,以便通过API发布匿名评论它。当你这样做的时候,还要确保你通过一个额外的strict=1参数。默认情况下,任何可选参数错误都会被简单地删除,所以如果author_name和author_email引发错误,您可能会遇到注释发布为自己的情况。

+0

非常感谢您的回复。我添加了access_token参数(正如我昨天试过的),但是现在我得到错误“您不能指定任何[author_name,author_email,author_url]作为已认证的用户”,因为正确使用access_token我认证为Disqus用户。我现在怎么解决? – 2013-03-15 16:07:43

+0

我会等待您的回复:) – 2013-03-18 13:50:37

+0

访问令牌是否与您的API应用程序相关联,以及您使用的用户名是否适用了您要发布的网站?这两个条件都需要是正确的,才能将评论作为访客发布。 – 2013-03-18 17:51:00

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应用程序设置中显示的公钥不同。其实我有检查的AJAX的一个来自Disqus的Javascript窗口小部件调用,以获得正确api_key

Disqus AJAX call headers showing the api_key

+1

你是对的。这似乎是一个disqus错误! – amleczko 2013-08-28 00:06:29

+1

我得到相同的API密钥。这让我觉得这个解决方案只是搭载在可嵌入的小部件上。我注意到,使用此API密钥并拨打电话后,我的应用程序的使用情况统计信息不受影响。我暂且称之为解决方法。虽然没有抱怨。我正在拉我的头发。 – 2014-01-02 20:39:03

+1

这是一件大事,你会认为他们现在会解决它。 – 2014-01-09 00:32:13

1

我再次打开了这个线程,因为我有同样的问题,似乎有没有答案吧然而。

我一直在尝试几天,通过API作为一个客人作出评论。 如果我读了API文档,它说我必须传递消息,author_name,author_url,thread和api_key来做到这一点,但不能这样做。我总是得到

"Code: 12" 

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

如果我通过发送的access_token为它的工作原理,但随后将发布为我,那不是我想要的。

我还发现Disqus recipes Github上,并在初级部分自述文件是指片段

“创建来宾评论:/php/create-guest-comment.php”

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

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