OAuth Echo
- l’Utente che utilizza X tramite una specifica App X autorizzata
- il Consumer, ovvero l’App X che sta tentando di interagire con il provider di media di terze parti (ad es. il sito di condivisione di foto)
- il Delegator, ovvero il provider di media di terze parti
- il Service Provider, cioè X stesso
x-auth-service-provider
— in pratica, è il “realm” a cui inviare la delega di identità — nel caso di X, impostalo su https://api.x.com/1.1/account/verify_credentials.json. Le integrazioni con X basate su iOS5 aggiungeranno un parametro aggiuntivo application_id a questo URL, che sarà utilizzato anche per calcolare l’oauth_signature usata in x-verify-credentials-authorization.x-verify-credentials-authorization
— il Consumer deve creare tutti i parametri OAuth necessari per poter chiamare https://api.x.com/1.1/account/verify_credentials.json usando OAuth nell’intestazione HTTP (ad es. dovrebbe apparire come OAuth oauth_consumer_key=”…”, oauth_token=”…”, oauth_signature_method=”…”, oauth_signature=”…”, oauth_timestamp=”…”, oauth_nonce=”…”, oauth_version=”…”).
oauth_timestamp
sia ancora valido.
In alternativa, invece di inviare questi due parametri nell’intestazione, possono essere inviati nel POST come x_auth_service_provider e x_verify_credentials_authorization — in tal caso, ricorda di eseguire l’escape e di includere i parametri nella base string della firma OAuth — in modo analogo alla codifica dei parametri in qualsiasi richiesta. È preferibile usare le intestazioni HTTP per mantenere le operazioni il più separate possibile.
L’obiettivo del Delegator, a questo punto, è verificare che l’Utente sia chi dichiara di essere prima di salvare i contenuti multimediali. Una volta che il Delegator riceve tutti i dati sopra tramite il suo metodo di upload, dovrebbe archiviare temporaneamente l’immagine e quindi effettuare una chiamata all’endpoint specificato nell’intestazione x-auth-service-provider — in questo caso, https://api.x.com/1.1/account/verify_credentials.json — usando la stessa intestazione di autenticazione OAuth fornita dal Consumer nell’intestazione x-verify-credentials-authorization.
Best practice per OAuth Echo
x-auth-service-provider
per effettuare il lookup, non un valore hard-coded. Apple iOS, ad esempio, aggiunge un parametro aggiuntivo application_id a tutte le richieste OAuth, e la sua presenza deve essere mantenuta in ogni fase di OAuth Echo.
Per la parte di autorizzazione OAuth, prendi il valore dell’intestazione x-verify-credentials-authorization e inseriscilo in un’intestazione Authorization separata per la chiamata al service provider. Per maggiore scrupolo, verifica che il valore in x-auth-service-provider
sia quello atteso.
- Se il Service Provider restituisce un HTTP 200, bene. Il Delegator dovrebbe archiviare in modo permanente l’immagine, generare un URL e restituirlo.
- Se il Service Provider non restituisce un HTTP 200, scarta l’immagine e restituisci un errore al Consumer.