Magento C# RestApi bug

本文关键字:bug RestApi Magento | 更新日期: 2023-09-27 18:24:56

我是c#的新手,但由于我在使用Delphi通过oAuth的REST连接Magento时遇到了问题。。。。我决定用C#开始字符串

我在网上搜索了一个解决方案,找到了Magento.RestApi库,它似乎是最新的。作为一个新手,我花了一点时间才成功地设置了测试环境,下面是我所做的:-安装Visual Studio 2015 Comunity后,我启动了一个新项目,然后从里面访问包管理器控制台并运行以下命令:

Install-Package Magento.RestApi

之后,我在表单上放置了一个按钮,点击后,我添加了以下代码:

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"

Magento C# RestApi bug

我找到了问题的解决方案。这是服务器端的问题。我不得不向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 的虚拟主机标签中添加此设置

添加设置后,我重新启动了appache服务,如:

service httpd restart

现在我终于可以使用C#库连接到我的REST Web服务了。

(我仍然有问题)如果我尝试测试连接到REST服务使用Firefox RESTClient的oAuth。在那里我犯了一个奇怪的错误消息:

oauth_problem=nonce_used

但只要我能连接到C#,我就会忽略这个问题。