Hi,
ich hänge gerade daran, dass ich versuche ein OAuth 1.0a gegen Garmin Connect zu implementieren.
Schritt 1 ist dabei logischerweise, dass man eine HMAC-SHA1 signature generiert. Hier mal die Beispiel-Werte von der Twitter-Dokumentation.
Ich habe dies neben meiner Implementierung nun auch mit den folgenden Online-Websiten getestet:
Man sieht, dass die Base64-Signatur der Signatur in der Twitter-Dokumentation entspricht (und zwar vor Parameter-Encoding):
Code:
Twitter (https://developer.twitter.com/en/docs/authentication/oauth-1-0a/creating-a-signature):
String: POST&https%3A%2F%2Fapi.twitter.com%2F1.1%2Fstatuses%2Fupdate.json&include_entities%3Dtrue%26oauth_consumer_key%3Dxvz1evFS4wEEPTGEFPHBog%26oauth_nonce%3DkYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1318622958%26oauth_token%3D370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb%26oauth_version%3D1.0%26status%3DHello%2520Ladies%2520%252B%2520Gentlemen%252C%2520a%2520signed%2520OAuth%2520request%2521
Key: kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw&LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE
Hex-Result: 842b5299887e88760212a056ac4ec2ee1626b549
Base64: hCtSmYh+iHYCEqBWrE7C7hYmtUk=
Dokumentation: hCtSmYh+iHYCEqBWrE7C7hYmtUk=
ParamEncoded: hCtSmYh%2BiHYCEqBWrE7C7hYmtUk%3D
Genau das gleiche probiere ich danach mit den Garmin-Beispielen aus:
Code:
Garmin (Garmin_Connect_OAuth_Specification.pdf):
String: POST&https%3A%2F%2Fconnectapi.garmin.com%2Foauth-service%2Foauth%2Frequest_token&oauth_consumer_key%3Dcb60d7f5-4173-7bcd-ae02-e5a52a6940ac%26oauth_nonce%3Dkbki9sCGRwU%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1484837456%26oauth_version%3D1.0
Key: 3LFNjTLbGk5QqWVoypl8S2wAYcSL586E285&
Hex-result: 414067191161126871d0ad6ca81b5e8e536ef05a
Base64: QUBnGRFhEmhx0K1sqBtejlNu8Fo%3D
ParamEncoded: QUBnGRFhEmhx0K1sqBtejlNu8Fo=
Dokumentation: %2BHlCpVX8Qgdw5Djfw0W30s7pfrY%3D
-> ungleich
Hier entspricht mein Ergebnis nicht dem Ergebnis in der Garmin-Dokumentation. Jetzt könnte theoretisch auch die Dokumentation falsch sein. Aber wenn ich es mit meinen echten Credentials gegen den Server mit curl ausprobiere, bekomme ich die Fehlermeldung “Inadequate OAuth consumer credentials.”, sprich auch hier habe ich den Hinweise, dass irgendetwas noch falsch ist.
Hat jemand eine Idee, warum bei Twitter die Signatur richtig rauskommt und bei Garmin nicht?
Grüße, Philipp