Ciao a tutti, sto cercando di implementare alcune Google API in un progetto ASP.NET MVC5.
Sono arrivato fino alla registrazione e autenticazione di un nuovo utente con quello che il template di VS2013 offre usando Identity.
Quello che non riesco a fare è accedere ad una qualsiasi delle API, tutti i riferimenti sono corretti, perché mi fermo proprio in fase di autenticazione dell'utente.
In pratica mi blocco quando l'applicazione, all'interno del controller, richiama AuthorizeAsync.
var result = await new AuthorizationCodeMvcApp(this, new AppFlowMetadata()).AuthorizeAsync(cancellationToken);
if (result.Credential != null)
{
//bla bla bla...
}
else
{
return new RedirectResult(result.RedirectUri);
}
result.Credential ritorna sempre null.
Di seguito l'implementazione di AppFlowMetadata che richiama GetUserId per ottenere le credenziali di cui sopra.
namespace CRM.Models.Google.Apis
{
public class AppFlowMetadata : FlowMetadata
{
private static readonly IAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = new ClientSecrets
{
ClientId=ConfigurationManager.AppSettings["GoogClientId"],
ClientSecret=ConfigurationManager.AppSettings["GoogClientSecret"]
},
Scopes = new[] {DriveService.Scope.Drive, PeopleService.Scope.Contacts, Oauth2Service.Scope.UserinfoEmail, Oauth2Service.Scope.UserinfoProfile },
DataStore = new FileDataStore("Drive.Api.Auth.Store")
});
public override string GetUserId(Controller controller)
{
var usr = controller.User.Identity.GetUserId();
return usr;
}
public override IAuthorizationCodeFlow Flow
{
get { return flow; }
}
}
}
Restituendo credenziali nulle inoltre la chiamata a new RedirectResult(result.RedirectUri) restituisce il seguente errore:
Error: redirect_uri_mismatch
The redirect URI in the request, https://localhost:44302/AuthCallback/IndexAsync, does not match the ones authorized for the OAuth client.
Nell'API console di Google l'URI di reindirizzamento indicato è correttamente inserito tra quelli autorizzati.
Qualcuno mi può aiutare a capire dove sbaglio?
Grazie