2015-05-18 37 views
1

我是Wordpress的新手。我想訪問WP-API以使用REST API創建帖子。我無法執行POST,PUT和刪除請求。儘管我只能檢索數據。我爲此寫了一個ruby腳本。以下是我的代碼片段。WP-API和Net :: Http驗證問題

require 'net/http' 
require 'net/http/oauth' 
require 'json' 

class CollectScript 
    def initialize 
    uri = URI.parse('http://vagrant.local/wp-json/wp/v2/posts') 
    http = Net::HTTP.new(uri.host, uri.port) 
    req = Net::HTTP::Post.new(uri.request_uri) 
    req.basic_auth("admin", "password") 
    res = http.request(req)  
    puts res.body 
    end 
end 
CollectScript.new 

在運行上面的代碼我收到以下錯誤:

{"status":"error","error":"You need to login with a user capable of creating posts."} 

使用與GET請求相同的代碼,我能夠得到職位JSON。但對於HTTP POST請求我需要通過身份驗證。我嘗試了基本認證和Oauth。但結果相同。

請任何人都可以幫助我弄清楚認證問題。

回答

0

我只需在我的Wordpress站點安裝這個basic_auth plugin

  • 首先,我從this鏈接
  • 下載zip文件現在它解壓到你的項目目錄
  • /內容/ plugins文件夾從您的wp-管理界面激活此插件。
  • 現在我用下面的代碼進行驗證

    uri = URI.parse("http://vagrant.local/wp-json/wp/v2/posts") 
    http = Net::HTTP.new(uri.host, uri.port) 
    req = Net::HTTP::Post.new(uri.request_uri) 
    req.basic_auth("admin", "password") 
    req.set_form_data({title: "Another 11new post", status: "publish", content_raw: "this is the content of the post", excerpt_raw: "Excerpt", post_media: ['/uploads/rails.png']}) 
    res = http.request(req) 
    puts res.body 
    

現在它成功的作品。

1

wp-api gem聲稱通過爲WP REST API提供ruby包裝來做你想做的事情。我不確定是否(或如何)工作,因爲我沒有自己嘗試過。至少它可以給你一些關於如何通過查看源代碼來處理連接的指針。

具體而言,在https://github.com/colinyoung/wp-api/blob/master/lib/wp/api/client.rb#L36你可以看到作者如何獲取資源,而在一個步驟執行基本身份驗證:記住

Client.get(path, basic_auth: { username: @user, password: @password }) 

熊這種寶石使用HTTParty它提供了get方法Client

+0

對不起,我沒有找到任何有用的資源建議您的寶石。 –

+0

您是否嘗試使用寶石?它支持後期/用戶檢索以及基本認證和元數據檢索。你想達到什麼目的? –

+0

還編輯我的答案,確切指出創業板的作者如何對待資源檢索和基本認證。 –