Frage

Ich habe heute mit OAuth gespielt und ich setzte sich auf meiner API. Bisher habe ich verzehrte die Dienste von meinem API mit einem iPhone app und ich will noch das tun, aber da ich OAuth hinzugefügt es schwieriger wird immer, es zu benutzen, und ich habe einige Probleme.

Hier ist, was ich habe:

  • Anbieter Seite
    • Eine kleine Seite Tasten und geheime Schlüssel für die Verbraucher
    • Bereitstellung
    • A request_token Seite ein Token an einen Verbraucher
    • geben
    • Eine authorise Seite einem Benutzer die Möglichkeit zu geben, ein Token zu autorisieren verwendet werden
    • Und schließlich eine token_access Seite, um die Anforderungs-Token in einem Zugriffstoken zu ändern meine API
    • zuzugreifen
  • Auf der Verbraucherseite gibt es:
    • eine Verbraucher-Taste (von einer Seite auf der Provider-Seite generiert)
    • ein Verbraucher geheimer Schlüssel (von einer Seite auf der Provider-Seite generierte)

Hier ist, was ich ohne Probleme tun kann:

  • Holen Sie sich ein Anforderungs-Token
  • Machen Sie den Benutzer autorisieren das Token

Und wenn ich versuche, dieses Token auf einen Zugriff zu ändern Token ich einen Fehler haben:

OAuthException2: Signature verification failed (HMAC-SHA1)

Es scheint, dass ich etwas irgendwo fehlt bin, aber ich kann, was nicht gefunden! Hier ist etwas anderes, das ich in den Protokollen gefunden, die hilfreich sein können:

Empfangen von Verbrauchern:

Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-us
Authorization: OAuth realm="", oauth_consumer_key="55af183bbbc2c386de3d0cb82a8bc4aa04d2883f9", oauth_token="4ba900b2cb3a6a67c13d0b089874649504d28c069", oauth_signature_method="HMAC-SHA1", oauth_signature="UKJXUjT4ZpEDeWFDVl7%2BUiqOids%3D", oauth_timestamp="1294516337", oauth_nonce="72D5BE27-D4DF-4C93-942F-96DCBCAB3509", oauth_version="1.0"
Connection: keep-alive
Cookie: PHPSESSID=676e088f8f13d7a1bb61d2437ee0b2a6
Host: localhost:8888
User-Agent: DearStranger/1.0 CFNetwork/485.12.7 Darwin/10.6.0

Antwort vom Anbieter:

X-Powered-By: PHP/5.3.2
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/plain

OAuth Verification Failed: Verification of signature failed (signature base string was "GET&http%3A%2F%2Flocalhost%3A8888%2FDearStranger%2Fwebservices%2Foauth%2Faccess_token.php&oauth_consumer_key%3D55af183bbbc2c386de3d0cb82a8bc4aa04d2883f9%26oauth_nonce%3D72D5BE27-D4DF-4C93-942F-96DCBCAB3509%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1294516337%26oauth_token%3D4ba900b2cb3a6a67c13d0b089874649504d28c069%26oauth_verifier%3D1234%26oauth_version%3D1.0"). with  Array
(
    [0] => dd918316d0190cf48d6bd6028ecbd9fc
    [1] => ec0390f4ce6bbbe6a5f13a651f8b95ff
    [2] => request
)

Ich bin mit OAuthConsumer auf der iPhone Seite (http://code.google.com/p/oauthconsumer). Gibt es etwas, dass dieser Rahmen falsch macht mir diese Fehler zu machen bekommen?

Vielen Dank für Ihre Antworten!

Martin

War es hilfreich?

Lösung

Schließlich fand ich heraus, dass ich den OAuthConsumer Rahmen für iPhone nicht mit dem richtigen Weg. Ich habe versucht, es auf die gleiche Weise verwenden ich es mit dem Twitter-API verwenden, sollten aber mein Server Exposition die gleichen Spezifikationen wie Twitters nicht haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top