Google Drive API - Example code is not working

2.1k views Asked by At

I want to use Google API to transfer SharePoint Documents to Google Drive using dot net. For that to happen I want to use this link Google Quick Start.

I have followed every little piece of information. It states in beginning "Complete the steps described in the rest of this page, and in about five minutes you'll have a simple Drive app that uploads a file to Google Drive" but it is not true.

I am trying to run this sample example since yesterday but failed.

// Register the authenticator and create the service
var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description, CLIENT_ID, CLIENT_SECRET);
var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization);

So it seems that this code example is outdated and Google APIs have been upgraded.

Here comes the warning

[Obsolete("GoogleAuthenticationServer is not supported any more and it's going to be removed in 1.7.0-beta. Consider using the new Google.Apis.Auth NuGet package which supports .NET 4, .NET for Windows Store apps, Windows Phone 7.5 and 8 and Portable Class Libraries as well")]

Another code

var service = new DriveService(new BaseClientService.Initializer()
{
Authenticator = auth
});

And the error

Cannot implicitly convert type 'Google.Apis.Authentication.OAuth2.DotNetOpenAuth.NativeApplicationClient' to 'Google.Apis.Http.IConfigurableHttpClientInitializer'. An explicit conversion exists (are you missing a cast?)

Then I was looking for [latest release samples] there I found the source files. I was not able able to run the sample also.

Here I was successfully authenticated but then had error for redirect Uri My Client_Secrets.JSON looks like, as you can see I have set default redirect Uri to http://localhost/.

{"web":{"auth_uri":"https://accounts.google.com/o/oauth2/auth","client_secret":"secret","token_uri":"https://accounts.google.com/o/oauth2/token","client_email":email","redirect_uris":["http://localhost/"],"client_x509_cert_url":"[email protected]","client_id":"id","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","javascript_origins":["http://localhost:53404/"]}}

Now I can run this application but as mentioned getting error

Error: redirect_uri_mismatch The redirect URI in the request: [[http://localhost:2430/authorize/]] did not match a registered redirect URI

I really don’t know from where this port number comes and from where this authorize comes. As you can see in my JSON, I have not set anything similar.

I am using VS 2010 SP1 Ultimate and Windows 7 home Basic.

I have tried to give complete information and my end goal is upload document in Google drive.

4

There are 4 answers

0
peleyal On BEST ANSWER

Take a look in https://code.google.com/p/google-api-dotnet-client/source/browse/Tasks.ASP.NET.SimpleOAuth2/Default.aspx.cs?repo=samples. It's a Task API ASP.NET sample. As you can see you need to add several lines of code, but it works.

12
Linda Lawton - DaImTo On

The tutorial you are following uses an older version of google.apis thats why you are seeing the not supported. Here are a couple of tutorials on how it works with the new version of the api.

0
Randall On

I downloaded the samples Eyal mentions and got that compiling before integrating with my own app. .Net needs to be 4 although it states it supports higher.

0
AudioBubble On

You have to set the redirect URI in the google developer console, not in your JSON. In your case, you would want to set it to http://localhost:2430/authorize/.