davosian / swissweather

SRF Meteo Weather API for Switzerland
MIT License
3 stars 1 forks source link

Error bei Abfrage #2

Closed JohnnyBrixton closed 3 years ago

JohnnyBrixton commented 3 years ago

Hei @davosian

Vielen Dank hast du deinen Code für die SRG Weather API zur Verfügung gestellt. Ich habe mir auch gleich einen Account eingerichtet und ausprobiert. Mir ist nicht ganz klar, welche Credentials verwendet werden sollen. Die Credentials, die man auch für das Login beim Developer Portal braucht oder die Key/Secret Kombination, die man unter My Apps findet?

bei der ersten Option kriege ich folgenden error: MissingTokenError: (missing_token) Missing access token parameter.

und bei der zweiten diesen error: ClientConnectorCertificateError: Cannot connect to host api.srgssr.ch:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1122)')]

Beste Grüsse

davosian commented 3 years ago

Hi @JohnnyBrixton,

ich fürchte, dass SRG die API komplett überarbeitet und hinter eine Paywall gestellt hat. Es sind jetzt nur noch 6 API Calls pro Tag und nur für eine Location möglich, sonst wirds richtig teuer.

Im Zuge dieser Umstellung scheinen sie OAuth2 richtig implementiert zu haben. In der alten Version war es eher eine Alibi-Übung. Für dich bedeutet dies, dass zwei API Aufrufe notwendig sind: erst die Authentifizierung -> liefert dir einen Access Token, dann der eigentliche API call (mit gesetztem Header Bearer Token).

Für dieses Projekt bedeutet es leider, dass es kräftig überarbeitet werden müsste, denn nicht mal mehr die URLs stimmen. Natürlich darfst du mir gerne einen Pull Request aufmachen :)

Wenn du aber selber nur etwas mit der API experimentieren möchtest, dann lege auf der SRG Website ein App an und verwende die dort hinterlegten Consumer Key / Consumer Secret (nicht deine Login Daten). Da die API aber geändert hat und ich aktuell nicht zu einer Projektaktualisierung komme, müsstest du dich an deren Doku orientieren.

Hier gibts ein "manuelles" Beispiel zur Authentifizierung: https://developer.srgssr.ch/content/easy-description-get-accesstoken

Für die neue Logik habe ich soeben ein Postman Projekt erstellt, welche die Geolocation-ID einer Stadt (Bern) ermittelt und damit dann das Wetter abfragt. Hier ist das Projekt (als json sichern und dann in Postman als Collection importieren): https://www.postman.com/collections/61e33f1d42d10359bec3. Nach dem Importierung müsstest du Consumer Key / Consumer Secret aus deiner App bei der Authentication auf Ebene Collection eintragen und dann auf den "Get New Access Token" Button klicken. Leider aber gilt wie erwähnt die Limitierung auf 6 Calls pro Tag.

JohnnyBrixton commented 3 years ago

Vielen Dank für deine ausführliche Antwort und Unterstützung! 👍 Da unser Projekt zufällig wirklich nur 1-2 mal pro Tag die Wettervorhersagen braucht, ist die SRG API immer noch nützlich für uns. Ich werde mich mal an Postman versuchen.... :)

Danke nochmals!

davosian commented 3 years ago

Ich drück dir die Daumen 👍

davosian commented 3 years ago

Kurzes Update: Nach Rückfrage bei der SRG wurde mir zugesagt, dass die Freemium Limite neu auf 50 API Calls pro Tag angesetzt werden wird. Somit also für viele Use Cases ausreichend. Hinzu kommt übrigens, dass die Wetterdaten 6-stündlich aktualisiert werden.

JohnnyBrixton commented 3 years ago

Danke für die Info. Habe jetzt eine kleine Library geschrieben, die für mein Projekt ausreichend funktioniert.

srg_meteo_api.txt

davosian commented 3 years ago

Oh cool, danke fürs Teilen. Wenn ich mich dann ans Überarbeiten mache, dient mir das dann gleich als Inspirationsquelle ;)