oauth/request_token

ciao a tutti ,
sono nuovo nel forum e vi chiedo se qualcuno può darmi una mano per accedere alla lettura delle mappe di osm.

riepilogo cosa ho fatto :
mi sono iscritto a osm e ho creato una applicazione fornendo un url e ricevendo questi dati

Chiave del consumatore: GsRr55jH…
Codice segreto dell’utilizzatore: egTRXqO…
URL del token di richiesta: https://www.openstreetmap.org/oauth/request_token
URL del token di accesso: https://www.openstreetmap.org/oauth/access_token
Autorizza URL: https://www.openstreetmap.org/oauth/authorize

La mia necessità è di aggiungere le mappe al nostro CRM ottenendo prima i geocode dei clienti ( fornendo gli indirizzi) e poi i tile delle mappe fornendo lat e long.

premetto che sono un programmatore c# e la applicazione è MVC 4.0 e che volevo accedere a osm senza librerie di terze parti.

ho trovato un buon riferimento qui https://stackoverflow.com/questions/47378232/rest-api-authentication-oauth-1-0-using-c-sharp ed un altro qui https://stackoverflow.com/questions/10687841/setting-up-twitter-oauth-without-3rd-party-libraries dove spiega la logica …

Ora il punto è che il server osm continua a rispondere server error 500 e non capisco perchè. ( se volete vi posto poi anche il codice ). ma la cosa strana è che se io apro una pagina di un browser e scrivo https://www.openstreetmap.org/oauth/request_token mi da lo stesso errore …

la domanda è : E’ sbagliato l’url o sono i parametri errati ??

qualcuno mi può dare una mano ??

grazie a tutti

giorgio

PS : per curiosità vi posto la signaturebase ottenuta dai vari passaggi :
GET%26https%3A%2F%2Fwww.openstreetmap.org%2Foauth%2Frequest_token%26oauth_consumer_key%3DGsRr55jHSSv8VWnMgLHjaVKZxgvca4UGOo4Tk8OG%26oauth_nonce%3DMTU1NDgzOTgzMg%253D%253D%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1554839832%26oauth_token%3D%26oauth_version%3D1.0

… che a me pare stia in piedi, cioè mi aspetteri una bad request ma non un 500.

Si effettivamente è strano che restituisca un Internal Server Error.
Due cose: il forum è poco attivo perché la comunita italiana preferisce la Mailing List.
C’è una sezione nel forum / ml per i developer .
Ora ho girato la tua richiesta in ml, aspetto risposta e la posto qua.
Appena ho un attimo di tempo ti fornisco degli strumenti utili per lavorare con OSM.
Terzo, hai verificato le policy per le chiamate ad OSM?
P.S.: rimango a disposizione per ulteriori domande.

ok , grazie Andreas
aspetto news

Se devi mostrare mappe o fare semplice geocoding, e quindi non devi editare la mappa, non ti serve avere un token di accesso.

Il problema nasce però dall’uso che ne vuoi fare perchè i sistemi della OSM foundation che ti possono dare questi servizi “gratis” (ovvero il tile server [1] e il geocoder [2]) non sono dimensionati per gestire accessi massivi da applicazioni.

Se superi i limiti delle usage policy [3] e [4] devi attivare questi servizi su tue istanze oppure affidarti a servizi di terze parti come Mapbox (che per quanto mi risulta prevede anche un free tier). In questo modo eviti sorprese per i tuoi utenti come sconnessioni dai siti OSM per uso improprio.

Ciao

[1] https://wiki.openstreetmap.org/wiki/Tile_servers
[2] https://wiki.openstreetmap.org/wiki/Nominatim
[3] https://operations.osmfoundation.org/policies/tiles/
[4] https://operations.osmfoundation.org/policies/nominatim/

ciao new member,
( scusa per il ritardo con cui ti scrivo ma ero fuori sede)

Ti ringrazio per le info che mi hai dato , sono state molto utili. Innanzi tutto volevo dirti che l’uso che ne vogliamo fare noi è molto limitato , si tratta di qualche decina di chiamate ogni tanto, cioè quando i commerciali vanno a trovar i clienti.
Detto ciò , in realtà noi vogliamo utilizzare osm perchè ci piace.

Dopo le tue dritte ho riletto meglio le policie s in particolare queste “HTTP Referer or User-Agent” e mi sono accorto che le chiamate che io facevo non avevamo HTTP Referer o User-Agent ( se ho capito bene i concetti ) in quanto sono chiamate da c# dal server.

allora ho inserito nella chiamata “https://nominatim.openstreetmap.org/search?” … anche la keyword email={nome user osm} …e improvvisamente tutto ha funzionato. ( però non cè scritto da nessuna parte …acc)
Ora vorrei provare ancora la chiamata a “//router.project-osrm.org/viaroute?”…

…allora. mi potresti spiegare questo meccanismo ??? …e che cosa dovrei mettere nella chiamata c# come “HTTP Referer o User-Agent” ??.

ultima cosa …che significa editare le mappe ??

ciao e grazie ancora per l’aiuto.

@Andreas Lattmann se trovi degli snippet di codice funzionante te ne sono grato …

scusa IIBano ,
Ho provato ad inserire nella chiamata ( nel mio primo post ) :

	 var httpWebRequest = (HttpWebRequest) WebRequest.Create(url);
	        httpWebRequest.Method = "GET";
	        httpWebRequest.Referer="http://crm.miosito.net";

…pensando di avere risolto il problema …e invece NO. Stesso errore 500 internal server error .

E’ obbligatorio passare uno user agent nella GET, mentre non lo è per il referer.

Lo user agent è una stringa arbitraria che identifica il tuo client HTTP e te la inventi… ad esempio mycrm1.0. Più è specifica e più sei certo che identifichi univocamente la tua app.
Per settarla usa la proprietà opportuna della classe httpWebRequest perchè non penso ci sia un default.

La chiamata a Nominatim con il parametro email (e un indirizzo valido come valore) mi sembra una buona idea.

Vedo che ora hai bisogno anche di fare routing… anche qui proverei con Mapbox o le API di www.openrouteservice.org.

Editare le mappe significa chiamare le API di Openstreetmap per inserire nuovi elementi nella mappa come nodi o way

Ciao

grazie IIBano,
ero arrivato a fuochino… ora tu mi dato la dritta che cercavo… con user agent ( che non sapevo fosse obbligatorio) … ora provo.

per quanto riguarda il routing non posso chiamare https://router.project-osrm.org/viaroute? ??? che vantaggi ho nell’utilizzo di Mapbox ??

Ciao IIBano , ho provato nella chiamata a inserire httpWebRequest.UserAgent = “crm.miocrm.net”; ma mi continua a dare server error 500 con lo status a WebExceptionStatus.ProtocolError=7

continuo a non capire l’errore…
qualche altra indicazione ??

A quell’indirizzo da browser si ottiene un bel not found. Dove l’hai trovato ?

Mi sembra comunque che nel sito di project OSRM vengano utilizzati i servizi di Mapbox

Per quanto riguarda il 500 qual’è l’url completo della chiamata che fai ? Hai provato a metterlo in un browser e a vedere cosa succede ?