Hallo Forum,
ich versuche gerade „zu Fuß“ per shell script die aktuellen Zählerdaten abzufragen und in eine influx DB zu schreiben.
OAuth funktioniert soweit, ich bin in der Lage, bswp. den Endpunkt
„https://api.discovergy.com/public/v1/meters“
abzufragen, auch mehrfach mit jeweils geänderten nonce / timestamp.
[{„meterId“:„11ac266457604f408a86cxxxxxxxxxxd“,…
Leider bekomme ich einen HTTP 401, wenn ich versuche, field_names abzufragen oder andere Abfragen mit queries vorzunehmen.
Ich bin der Meinung, daß der base_string für OAuth falsch ist - oder falsch geprüft wird.
Die meter und damit auch die meterId bekomme ich erfolgreich:
das funktioniert
params=(
$(OAuth_param 'oauth_nonce' "$oauth_nonce")
$(OAuth_param 'oauth_token' "$oauth_token")
$(OAuth_param 'oauth_consumer_key' "$oauth_consumer_key")
$(OAuth_param 'oauth_signature_method' "$oauth_signature_method")
$(OAuth_param 'oauth_version' "1.0")
$(OAuth_param 'oauth_timestamp' "$(date +%s)")
)
base_string=$(OAuth_base_string 'GET' 'https://api.discovergy.com/public/v1/meters' ${params[@]})
signature=$(_OAuth_signature "$oauth_signature_method" "$base_string" "$oauth_consumer_secret" "$oauth_token_secret")
curl -X GET \
https://api.discovergy.com/public/v1/meters \
-H 'Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2' \
-H "Authorization: OAuth $(_OAuth_authorization_header_params_string ${params[@]})"
wenn ich das gleiche mit dem field_names endpunkt mache, bekomme ich einen 401
params=(
$(OAuth_param 'oauth_nonce' "$oauth_nonce")
$(OAuth_param 'oauth_token' "$oauth_token")
$(OAuth_param 'oauth_consumer_key' "$oauth_consumer_key")
$(OAuth_param 'oauth_signature_method' "$oauth_signature_method")
$(OAuth_param 'oauth_version' "1.0")
$(OAuth_param 'oauth_timestamp' "$(date +%s)")
)
base_string=$(OAuth_base_string 'GET' 'https://api.discovergy.com/public/v1/field_names' ${params[@]})
signature=$(_OAuth_signature "$oauth_signature_method" "$base_string" "$oauth_consumer_secret" "$oauth_token_secret")
curl -v -X GET \
https://api.discovergy.com/public/v1/field_names?meterId=11ac266457604f408a86c31111111111 \
-H 'Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2' \
-H "Authorization: OAuth $(_OAuth_authorization_header_params_string ${params[@]})"
< HTTP/1.1 401 Unauthorized
Was mache ich falsch?
Die meterID habe ich verfälscht, die ID wird aus der meters Abfrage entnommen.
Keinen Unterschied, wenn ich die meterId mit in den base_string mit aufnehme für die signature.
Hilfe!
Viele Grüße,
Spock