簡體   English   中英

Magento C#RestApi錯誤

[英]Magento C# RestApi bug

我是C#的新手,但是由於我無法使用Delphi使用oAuth通過REST連接到Magento。...我決定開始使用C#來實現

我在網上搜索了一個解決方案,並找到了Magento.RestApi庫,該庫似乎是最新的。 作為一個新手,我花了一些時間才成功設置好測試環境,所以我做了以下工作:-安裝Visual Studio 2015 Comunity之后,我開始了一個新項目,然后從其中開始訪問軟件包管理器控制台並運行以下命令:

Install-Package Magento.RestApi

之后,我在表單上放置了一個按鈕,然后在onClick上添加了以下代碼:

var client = new MagentoApi()
.SetCustomAdminUrlPart("index.php/admin")
.Initialize("http://www.example.com/magento/", "77896eyrf34i37873gh7389h7e3fg34", "u837h743488dg38g8384433423")
.AuthenticateAdmin("adminuser", "adminpassword");

當然,我在代碼中添加了using子句:

using Magento.RestApi;

另外,Initialize的參數是必需的...帶有密鑰和機密。 據我了解(完全沒有任何文檔),這應該實例化一個Magento RestAPI對象,該對象將允許我與magento商店進行交互。

當我運行代碼並單擊按鈕時,這就是我得到的:

Exception thrown: 'Magento.RestApi.MagentoApiException' in Magento.RestApi.dll

Additional information: The provided admin username 'adminuser' or password is invalid. The user needs to be a Magento admin.

關鍵是:該用戶是完美用戶,是我的管理員用戶,密碼正確。 用戶的REST角色是在我的Magento存儲的后端設置的,其余所有設置都是在后端完成的,以便啟用REST。

另一方面,我試圖研究該庫的功能,並安裝了Fiddler ...只是發現實際上我的商店返回的錯誤頁面是:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /magento/oauth/initiate was not found on this server.</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at www.example.com Port 80</address>
</body></html>

(這是來自Fiddler的TextView)

所以很顯然,我的REST調用的URL錯誤嗎? 還是我的商店設置不正確?

另外,似乎還使用了oAuth,因為在請求(也是Fiddler)的Auth選項卡中,我具有以下功能:

No Proxy-Authorization Header is present.

Authorization Header is present: OAuth oauth_callback="http%3A%2F%2Flocalhost%3A8888",oauth_consumer_key="77896eyrf34i37873gh7389h7e3fg34",oauth_nonce="kldcjldvnldgkll",oauth_signature="jkiu3i5i5hbikh%3D",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1448717978",oauth_version="1.0"

我找到了解決我問題的方法。 這是服務器端的問題。 我必須在httpd.conf文件中添加一些設置。 我的意思是我必須檢查已安裝的Apache版本(2.2.3),具體取決於您的Linux版本,apache配置文件的名稱可能不同,並且可能位於其他位置,但對於我的CENTOS,位置為:

/etc/httpd/conf/httpd.conf

然后在httpd.conf中我添加了:

<Directory /var/www/html/www.example.com/magento/>
  Options Indexes FollowSymLinks
  AllowOverride All
  Satisfy Any
</Directory>

另外,因為我使用VirtualHosts,所以我需要在托管magento的Virtual Host TAG中添加此設置

添加設置后,我重新啟動了appache服務,如下所示:

service httpd restart

現在,我終於可以使用C#庫連接到我的REST Web服務。

(我仍然有問題)如果我嘗試通過Firefox的RESTClient使用oAuth測試連接到REST服務的情況。 在那邊,我收到一條奇怪的錯誤消息:

oauth_problem=nonce_used

但是只要我可以使用C#進行連接,我就將忽略此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM