Fehler oauth_problem = Signatur_invalid für POST

7

Ich benutze Magento Rest API zum Abrufen von Daten und es funktioniert sehr gut, aber wenn ich Daten senden möchte, geben Sie diesen Fehler zurück

   "messages": {
        "error": [
            {
                "code": 401,
                "message": "oauth_problem=signature_invalid"
            }
        ]
    }

Ich benutze Postman dafür ... gibt es jemanden, der mir sagen kann, warum ich diesen Fehler bekomme?

gh darvishani
quelle
Dies ist ein Magento-Kern / Der Client, der zum Generieren eines OAuth-Signaturproblems verwendet wird. Die vom Client generierte Signatur und die von Magento generierten Signaturen stimmen nicht überein. Dies ist der Grund, warum dieser Fehler ausgelöst wurde. Für temporäre Tests können Sie einfach den Magento-Code kommentieren, der die Signatur überprüft, und durch Fehler, wenn er nicht übereinstimmt. Hier sind die Zeilen, die die Sinaturen überprüfen. In der Datei app / code / core / Mage / Oauth / Model / Server.php Zeilennummer 547 bis 549 if ($ berechneSign! = $ This -> _ protocolParams ['oauth_signature']) {$ this -> _ throwException ('', self :: ERR_SIGNATURE_INVALID); } Hier können Sie sehen
Arshad M

Antworten:

7

Dies ist ein Magento-Kern / Der Client, der zum Generieren eines OAuth-Signaturproblems verwendet wird.

Die vom Client generierte Signatur und die von Magento generierten Signaturen stimmen nicht überein. Dies ist der Grund, warum dieser Fehler ausgelöst wurde.

Für temporäre Tests können Sie einfach den Magento-Code kommentieren, der die Signatur überprüft, und Fehler anzeigen, wenn sie nicht übereinstimmen

Hier sind die Zeilen, die Sinaturen prüfen.

In der Datei app / code / core / Mage / Oauth / Model / Server.php

Zeilennummer 547 bis 549

if ($calculatedSign != $this->_protocolParams['oauth_signature']) {
     $this->_throwException('', self::ERR_SIGNATURE_INVALID);
}

Hier können Sie sehen, wo $calculatedSignsich die von Magento berechnete Signatur befindet und $this->_protocolParams['oauth_signature']was wir senden.

Zu Testzwecken können Sie diese Zeilen kommentieren und arbeiten.

Arshad M.
quelle
Wenn wir eine Live-App und eine Website haben, wie erstellen wir dann eine Signatur?
ARVIND KARKAR
1

Haben Sie die Namen und Werte von Parametern verschlüsselt?

Ich hatte auch dieses Problem und das hat mir geholfen.

Müssen Sie sicherstellen , dass Ihre Unterschrift Basis String - Parameter sind in alphabetischer Reihenfolge durch Parameternamen

Dies ist, was ich verwende, um Parameter in meiner Signaturbasis zu codieren.

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();
Vishwas Bhatnagar
quelle
danke aber ich benutze post man und den post man auto create signatuer
gh darvishani
1

Ich habe in letzter Zeit das gleiche Problem festgestellt.

Ich habe es geschafft, indem ich die Signaturmethode im Authentifizierungsheader von HMAC-SHA1 in PLAINTEXT geändert habe .

Cazo
quelle
0

Ich habe AFOAuth1Clientin einer iOS-App mit der Magento Rest API gesprochen. Wechseln von

[client setSignatureMethod:AFHMACSHA1SignatureMethod];

zu

[client setSignatureMethod:AFPlainTextSignatureMethod];

Laut Cazos Antwort wurde dieses Problem behoben.

Al.
quelle