Google .NET redirect uri site validation API not accepted

(http removed due to reputation) I am testing google site validation API with google projects google apis samples but i have uri redirection issue. I am getting client_secrets.json (with a redirect redirect set) from my GoogleDrive app, but the uri redirect this program is receiving is something like "localhost: 1168 / authorize /" (it changes). I have set up a uri redirect to "www.google.com" and "www.google.com/".

namespace SiteVerification.VerifySite

      

{

internal class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        // Display the header and initialize the sample.
        Console.WriteLine("Site Verification sample");
        Console.WriteLine("========================");

        UserCredential credential;
        using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
        {
            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                new[] { SiteVerificationService.Scope.Siteverification },
                "user", CancellationToken.None, new FileDataStore("SiteVerification.VerifySite")).Result;
        }

        // Create the service.
        var service = new SiteVerificationService(new BaseClientService.Initializer
            {
                HttpClientInitializer = credential,
                ApplicationName = "SiteVerification API Sample",
            });
        RunVerification(service);

        Console.WriteLine("Press any key to continue...");
        Console.ReadKey();
    }

    /// <summary>
    /// This method contains the actual sample code.
    /// </summary>
    private static void RunVerification(SiteVerificationService service)
    {
        // Request user input.
        Console.WriteLine("Please enter the URL of the site to verify:");
        var site = Console.ReadLine();
        Console.WriteLine();

        // Example of a GetToken call.
        Console.WriteLine("Retrieving a meta token ...");
        var request = service.WebResource.GetToken(new SiteVerificationWebResourceGettokenRequest()
        {
            VerificationMethod = "meta",
            Site = new SiteVerificationWebResourceGettokenRequest.SiteData()
            {
                Identifier = site,
                Type = "site"
            }
        });
        var response = request.Execute();
        Console.WriteLine("Token: " + response.Token);
        Console.WriteLine();

        Console.WriteLine("Please place this token on your webpage now.");
        Console.WriteLine("Press ENTER to continue");
        Console.ReadLine();
        Console.WriteLine();

        // Example of an Insert call.
        Console.WriteLine("Verifying...");
        var body = new SiteVerificationWebResourceResource();
        body.Site = new SiteVerificationWebResourceResource.SiteData();
        body.Site.Identifier = site;
        body.Site.Type = "site";
        var verificationResponse = service.WebResource.Insert(body, "meta").Execute();

        Console.WriteLine("Verification:" + verificationResponse.Id);
        Console.WriteLine("Verification successful!");
    }
}

      

}

And my "client_secrets.json" (I changed the Stuff in the headers)

{
"web": {
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "client_secret": "CLIENT_SECRET",
    "token_uri": "https://accounts.google.com/o/oauth2/token",
    "client_email": "STUFF",
    "redirect_uris": [
        "http://www.google.com/",
        "http://www.google.com"
    ],
    "client_x509_cert_url": "STUFF",
    "client_id": "CLIENT_ID",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "javascript_origins": [
        "https://www.google.com"
    ]
}

      

}

And the error I get is:

      

  1. This is mistake.

Error: redirect_uri_mismatch

Application: GoogleApisSamples

The redirect URL in the request: localhost: 1168 / authorize / does not match the registered redirect URI.

+3


source to share


2 answers


The redirect URI must match the location where the authentication is to be returned, in

With a, Client ID for native application

you can set the following:

 Redirect URIs     urn:ietf:wg:oauth:2.0:oob  
                   http://localhost

      

For Client ID for web application

it will be something more like this



    Redirect URIs     
         http://localhost/google-api-php-client-samples/oauth2.php 

      

The web needs a patch to the real file.

For this example, it might be easier to use file upload to stream.

string[] scopes = new string[] { SiteVerificationService.Scope.Siteverification };
// here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData%
UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets
                                           {
                                            ClientId = CLIENT_ID,
                                            ClientSecret = CLIENT_SECRET
                                             },
                   scopes,
                   Environment.UserName,
                   CancellationToken.None,
                   new FileDataStore"Daimto.SiteVerification.Auth.Store")).Result;

// Create the service.
var service = new SiteVerificationService(new BaseClientService.Initializer
            {
                HttpClientInitializer = credential,
                ApplicationName = "SiteVerification API Sample",
            });

      

+2


source


Thanks for this answer. This is the only place I think of, it clearly states that for the web application type, the redirect_uri must be mapped to the actual file. I am using ASP.Net MVC application and give action as redirect_uri (Wrong). When I changed it to an actual * .cshtml file it all worked !!!



0


source







All Articles