2016-07-07 64 views
5

Ho riscontrato qualche problema durante l'utilizzo di Xamarin.Auth per l'autenticazione OAuth2.Utilizzo di Xamarin.Auth per l'autenticazione OAuth2: nome utente e password?

Da POSTINO sto inviando richiesta di token, tramite metodo GET per il mio URL backend: http://example.com/backend/oauth/token con l'aggiunta di intestazione:

autorizzazione, di base xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

e con i parametri di sotto nell'URL:

client_id = backendClient

scope = leggere

grant_type = Password

nome utente = admin

la password = admin

così si va come: http://example.com/backend/oauth/token?client_id=backendClient&scope=read&grant_type=password&username=admin&password=admin

mi dà indietro JSON , che assomiglia a:

{ 
"access_token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
"token_type": "bearer", 
"refresh_token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
"expires_in": 9999, 
"scope": "read" 
} 

ho voluto per l'autenticazione al mio servizio di back-end, da applicazioni mobile (utilizzando Xamarin.Forms app), e ho cercato di utilizzare Xamarin.Auth, per l'autenticazione al mio backend - https://developer.xamarin.com/guides/xamarin-forms/web-services/authentication/oauth/

Infatti utilizzando OAuth2Authenticator, è in grado almeno di "ping" il mio backend (mettendo URL, clientIde ecc), come si ritorna:

<UnauthorizedException> 
    <error>unauthorized</error> 
    <error_description>Full authentication is required to access this resource</error_description> 
</UnauthorizedException> 

tuttavia il messaggio è inviato in modo errato - almeno credo, dato che non c'è Autorizzazione nell'intestazione + Non ho visto alcuna possibilità di passare nome utente e password in OAuth2Authenticator.

Qualcuno ha idea, come posso farlo? O dovrei usare qualcos'altro - non Xamarin.Auth?

Grazie.

+0

Si prega di aggiungere anche esempi sulle chiamate OAuth2Authenticator mentre si sta chiedendo cosa si sta facendo in modo errato. E Xamarin.Auth funziona per me per l'autenticazione Dropbox. Per Microsoft Live, ho dovuto apportare alcune modifiche in quanto vi è una leggera deviazione nella gestione delle richieste rispetto a quanto implementato in Xamarin.Auth. Aggiungete anche alcune informazioni su quale versione di Xamarin.Auth state usando. – eX0du5

+0

Per me è semplice capire, cosa potrebbe essere sbagliato, dopo qualche ricerca. L'implementazione del mio backend OAuth2 richiedeva Header con * Chiave di autorizzazione * e valore hash. Il problema è che Xamarin.Auth non è in grado di passare l'intestazione - https://github.com/xamarin/Xamarin.Auth/issues/61 C'è qualche soluzione? – Namek

+0

quale ramo di questo progetto stai usando? Il master branch obsoleto o https://github.com/xamarin/Xamarin.Auth/tree/portable-bait-and-switch che sembra essere la base del pacchetto Nuget (versione 1.5 se non ricordo male). – eX0du5

risposta

1

Ecco come lo faccio (non si usa Xamarin.Auth):

var client = new HttpClient(); 
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokenGoesHere); 

quindi è possibile aggiungere qualsiasi contenuto che ti piace e Get/Post/PutAsync, quello che vi serve.