22 messaggi dal 06 novembre 2014
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

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.