2013-03-14 98 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創建作爲訪客的評論?如果願意,可以更新您的文檔。

如果我做錯了什麼,我會很感激你指向正確的方向。