oauth_signature lỗi không hợp lệ khi sử dụng API Magento Rest với bộ lọc GET


7

Tôi đang gặp khó khăn khi tìm nạp các đơn đặt hàng từ API Magento REST khi tôi sử dụng các bộ lọc GET của nó như http://localhost/magento/api/rest/orders/?filter[1][attribute]=entity_id&filter[1][gt]=70&page=1&limit=100

Nó đang cho "error":[{"code":401,"message":"oauth_problem=signature_invalid"}]

Khi tôi thử nhấn điểm cuối API tương tự bằng ứng dụng REST Client như Postman, tôi sẽ nhận được kết quả JSON mong muốn.

Tôi nghi ngờ dấu ngoặc vuông trong truy vấn bộ lọc có thể gây ra sự cố khi tạo chữ ký Oauth. Tất cả các điểm cuối không có bộ lọc GET đều hoạt động tốt. Tôi đang sử dụng mô-đun nút Yêu cầu để thực hiện yêu cầu GET với các tiêu đề oauth.

Có cách khắc phục nào để tránh lỗi chữ ký không hợp lệ không?


Có câu trả lời nào cho câu hỏi này không hoặc bạn đã tìm được cách áp dụng bộ lọc chưa? tôi cũng đang đối mặt với vấn đề tương tự
UmeshR

Vấn đề nằm ở mô-đun nút Yêu cầu mà tôi đang sử dụng để tạo chữ ký OAuth. Đây không phải là yếu tố cho dấu ngoặc vuông trong URL. Tôi đã sửa đổi mã trong mô-đun để bao gồm dấu ngoặc vuông. Kiểm tra phương thức tạo chữ ký OAuth bạn đang sử dụng.
srikanth

đó là ngay sau một thời gian tôi đã giải quyết nó, cảm ơn bạn đã gợi ý cho bạn.
UmeshR

Tôi có cùng một vấn đề. Nếu chuỗi truy vấn chứa dấu ngoặc vuông, chữ ký không hợp lệ. Làm thế nào bạn có thể giải quyết nó? Cảm ơn bạn.

Tôi cũng đang gặp vấn đề tương tự. Làm thế nào bạn giải quyết? Dấu ngoặc vuông được mã hóa chính xác và thứ tự các tham số chuỗi truy vấn vẫn ổn nhưng tôi vẫn nhận được chữ ký không hợp lệ.
Gustavo Piucco

Câu trả lời:


3

Bạn đã quản lý để mã hóa tên và giá trị của các tham số?

Tôi cũng gặp vấn đề này và điều này đã giúp tôi.

Bạn phải đảm bảo rằng các tham số chuỗi cơ sở chữ ký của bạn theo thứ tự chữ cái theo tên tham số

Đây là những gì tôi đang sử dụng để mã hóa các tham số trong cơ sở chữ ký của mình.

var result = new StringBuilder();
string webUnreservedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
foreach (char symbol in url)
{
    if (webUnreservedChars.IndexOf(symbol) != -1)
        result.Append(symbol);
    else
        result.Append('%' + ((int)symbol).ToString("X2"));
}
return result.ToString();

Hi vọng điêu nay co ich :)


Chào mừng bạn đến với Magento SE. Cảm ơn câu trả lời của bạn. Mặc dù nó là một câu trả lời cho một câu hỏi cũ, nó vẫn có thể hữu ích cho những người khác :)
Julien Lachal

0

Có một vấn đề với nhà cung cấp chức năng lõi magento / magento / framework / Oauth / Oauth.php Nhận xét số dòng 199.


0

Mẹo nhỏ là bạn phải chuyển đổi dấu ngoặc vuông trong chuỗi cơ sở chữ ký hai lần:

  • [=>% 5B =>% 255B
  • ] =>% 5D =>% 255D
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.