Open GoogleCodeExporter opened 9 years ago
I am having the very same problem - my code has been working for two years
without any issues. Same exception:
Unhandled Exception: Google.GData.Client.GDataRequestException: Execution of
aut hentication request returned unexpected result: 404 at
Google.GData.Client.Utilities.getAuthException(TokenCollection tokens, Htt
pWebResponse response) at
Google.GData.Client.Utilities.QueryClientLoginToken(GDataCredentials gc, S
tring serviceName, String applicationName, Boolean fUseKeepAlive, IWebProxy
prox yServer, Uri clientLoginHandler) at
Google.GData.Client.GDataGAuthRequest.QueryAuthToken(GDataCredentials gc) at
Google.GData.Client.GDataGAuthRequest.EnsureCredentials() at
Google.GData.Client.GDataRequest.EnsureWebRequest() at
Google.GData.Client.GDataGAuthRequest.EnsureWebRequest() at
Google.GData.Client.GDataRequest.Execute() at
Google.GData.Client.GDataGAuthRequest.Execute(Int32 retryCounter) at
Google.GData.Client.GDataGAuthRequest.Execute() at
Google.GData.Client.Service.Query(Uri queryUri, DateTime ifModifiedSince,
String etag, Int64& contentLength) at
Google.GData.Client.Service.Query(FeedQuery feedQuery) at
Google.GData.Documents.DocumentsService.Query(DocumentsListQuery feedQuery ) at
GoogleLogger.GoogleService.getLastXECLogRows(String folderName, String
fileName, Int32 rows)
This is occurring on my production system, so it's a huge problem for us.
Original comment by evilstee...@gmail.com
on 26 May 2015 at 9:30
This site is down: https://developers.google.com/accounts/RegistrationForWebApps
Original comment by evilstee...@gmail.com
on 26 May 2015 at 9:36
I am getting a similar issue. Getting 404'ed when it was working fine just
prior to 14:53 PST. I'm using Google.GData.Spreadsheets 2.2.0.0
Original comment by k...@kuwaitculturela.org
on 26 May 2015 at 10:27
I take it you guys all use the GData API still? I have been digging around and
it seems that there is a new API:
https://developers.google.com/drive/web/quickstart/quickstart-cs
I really hope that the old GData API is still supported or we'll have to
rewrite everything. BTW the new Drive API is not supported by .Net 3.5 - so
this is a huge disaster for me.
Original comment by evilstee...@gmail.com
on 26 May 2015 at 10:50
yes .. it was working fine until 3 PM ET today .. then BOOM!!!!!
anyone found the solution???
Original comment by APUS...@gmail.com
on 27 May 2015 at 1:01
I have the same problem. Authentication is not working for me at all. I
really don't want to rewrite everything either.
Original comment by ad...@dloweb.com
on 27 May 2015 at 1:25
I'm seeing the same issue ...
Type
Google.GData.Client.GDataRequestException
Message
Execution of authentication request returned unexpected result: 404
Stack ...
at Google.GData.Client.Utilities.getAuthException(TokenCollection tokens,
HttpWebResponse response) at
Google.GData.Client.Utilities.QueryClientLoginToken(GDataCredentials gc, String
serviceName, String applicationName, Boolean fUseKeepAlive, IWebProxy
proxyServer, Uri clientLoginHandler) at
Google.GData.Client.GDataGAuthRequest.QueryAuthToken(GDataCredentials gc) at
Google.GData.Client.GDataGAuthRequest.EnsureCredentials() at
Google.GData.Client.GDataRequest.EnsureWebRequest() at
Google.GData.Client.GDataGAuthRequest.EnsureWebRequest() at
Google.GData.Client.GDataRequest.Execute() at
Google.GData.Client.GDataGAuthRequest.Execute(Int32 retryCounter) at
Google.GData.Client.Service.Query(Uri queryUri, DateTime ifModifiedSince,
String etag, Int64& contentLength) at
Google.GData.Client.Service.Query(FeedQuery feedQuery) at
Google.GData.Spreadsheets.SpreadsheetsService.Query(SpreadsheetQuery feedQuery)
Original comment by lhfied...@gmail.com
on 27 May 2015 at 1:54
Also experiencing the error with em client accessing Google contacts. Works for
email and calendar, but not for contacts since 12 pm PST today.
Original comment by aynch...@gmail.com
on 27 May 2015 at 2:57
Also Sample Applications give the same error. Anybody get error on version 2.1
?
Original comment by yuceloz...@gmail.com
on 27 May 2015 at 2:58
I get same issue today. hurry!
Original comment by wang.zha...@gosugroup.com
on 27 May 2015 at 3:10
Same here, i'm using GData API v2.2
Original comment by eron...@gmail.com
on 27 May 2015 at 3:39
There is a note on the sheets API page
(https://developers.google.com/google-apps/spreadsheets/authorize) saying that
OAuth1.0 will be killed off on May 5th and you have to use the OAuth 2.0
service.
Original comment by dmonkey1...@gmail.com
on 27 May 2015 at 3:47
I am also started this issue around 12pm PDT.
Google.GData.Client.GDataRequestException: Execution of authentication request
returned unexpected result: 404
at Google.GData.Client.Utilities.getAuthException(TokenCollection tokens, HttpWebResponse response)
at Google.GData.Client.Utilities.QueryClientLoginToken(GDataCredentials gc, String serviceName, String applicationName, Boolean fUseKeepAlive, IWebProxy proxyServer, Uri clientLoginHandler)
at Google.GData.Client.GDataGAuthRequest.QueryAuthToken(GDataCredentials gc)
at Google.GData.Client.GDataGAuthRequestFactory.QueryAuthToken(GDataCredentials gc)
at Google.GData.Client.Service.QueryClientLoginToken()
Original comment by alex....@cantaloupesys.com
on 27 May 2015 at 4:51
[deleted comment]
Please update if someone find solution.I am getting this issue when try to read
group names,till yesterday everything was working fine.
Following is the exception which i am getting:
at Google.GData.Client.Utilities.getAuthException(TokenCollection tokens, HttpWebResponse response)
at Google.GData.Client.Utilities.QueryClientLoginToken(GDataCredentials gc, String serviceName, String applicationName, Boolean fUseKeepAlive, IWebProxy proxyServer, Uri clientLoginHandler)
at Google.GData.Client.GDataGAuthRequest.QueryAuthToken(GDataCredentials gc)
at Google.GData.Client.GDataGAuthRequest.EnsureCredentials()
at Google.GData.Client.GDataRequest.EnsureWebRequest()
at Google.GData.Client.GDataGAuthRequest.EnsureWebRequest()
at Google.GData.Client.GDataRequest.Execute()
at Google.GData.Client.GDataGAuthRequest.Execute(Int32 retryCounter)
at Google.GData.Client.GDataGAuthRequest.Execute()
at Google.GData.Client.Service.Query(Uri queryUri, DateTime ifModifiedSince, String etag, Int64& contentLength)
at Google.GData.Client.Service.Query(Uri queryUri, DateTime ifModifiedSince)
at Google.GData.Client.Service.Query(FeedQuery feedQuery)
at Google.GData.Client.Feed`1.get_AtomFeed()
at Google.GData.Client.Feed`1.<get_Entries>d__0.MoveNext()
at IMAPCommands.GetGroups.PrintAllGroups(ContactsRequest cr) in e:\back\TestFolder\IMAPCommands\IMAPCommands\GetGroups.cs:line 18
at IMAPCommands.Program.Main(String[] args) in e:\back\TestFolder\IMAPCommands\IMAPCommands\Program.cs:line 22
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
Original comment by sunny198...@gmail.com
on 27 May 2015 at 5:38
I have exactly the same problem... My production systems depends on google docs
and I have a major disaster now. Any knows if google is working on that ?
Original comment by off...@e-cosmetorium.com
on 27 May 2015 at 5:44
Guys isn't it somehow connected with the information:
'OAuth 1.0 is no longer supported and will be disabled on May 5, 2015'
https://developers.google.com/google-apps/spreadsheets/authorize
Anyone migrate code to use OAuth 2.0 and thus solved the problem?
Original comment by off...@e-cosmetorium.com
on 27 May 2015 at 5:48
[deleted comment]
But today is 27 May :-), Why it is reflecting after almost 20 days.
Original comment by sunny198...@gmail.com
on 27 May 2015 at 5:52
No idea why it may take an effect 20 days later.
Any one who have code snippet in .NET with the authentication OAuth 2.0 , I try
to solve it on production as fast as I can now.
Thanks
Original comment by off...@e-cosmetorium.com
on 27 May 2015 at 5:56
Anybody has a fix ? Please let us know immediately
Original comment by pallavi....@paxcel.net
on 27 May 2015 at 6:37
While fetching gmail contact details m getting "Execution of authentication
request returned unexpected result: 404" Exception ... please kindly help me to
sort out this issue as earlier as possible.
Below mention is my Code
RequestSettings rs = new RequestSettings("MyNetwork Web Application!",
TEmailID, Tpass);
rs.AutoPaging = true;
ContactsRequest cr = new ContactsRequest(rs);
Feed<Contact> f = cr.GetContacts();
Original comment by sangeeth...@gmail.com
on 27 May 2015 at 6:41
Clearly we'll need to use OAuth2 but the only examples I've run across use
copy/pasting a URL into a web browser and retrieving it, and then pasting it
into the command line:
https://developers.google.com/google-apps/spreadsheets/authorize
I'm running an application outside of a web browser, so that's not an option.
We need to find an OAuth2 example that works without manually accepting a token.
Original comment by evilstee...@gmail.com
on 27 May 2015 at 7:54
M using GContacts Data API provided by Google to retrieve contacts from gmail
... using asp.net c#(VS2010). Please guide me how to solve this problem.
what is this OAuth2?
Original comment by sangeeth...@gmail.com
on 27 May 2015 at 8:05
I've managed to solve this by using this solution with Service Account with
oAuth2.0
http://stackoverflow.com/questions/13664731/accessing-older-gdata-apis-spreadshe
et-api-using-oauth-2-and-a-service-account
The solution:
1. Create Project and Google Service Account in
https://console.developers.google.com/project
2. Generate your p12 key.
3. Allow APIs in Developer console you want to use (basically we are going to
use old API, so you can skip this step, but just in case)
4. Use the code below (.NET Framework 4.5!):
using System.Security.Cryptography.X509Certificates;
using Google.GData.Client;
using Google.GData.Extensions;
using Google.GData.Spreadsheets;
using Google.Apis.Auth.OAuth2;
string keyFilePath = @"C:\key.p12"; // found in developer console
string serviceAccountEmail = "youraccount@developer.gserviceaccount.com"; //
found in developer console
var certificate = new X509Certificate2(keyFilePath, "notasecret",
X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(new
ServiceAccountCredential.Initializer(serviceAccountEmail) //create credential
using certigicate
{
Scopes = new[] { "https://spreadsheets.google.com/feeds/" } //this scopr is for spreadsheets, check google scope FAQ for others
}.FromCertificate(certificate));
credential.RequestAccessTokenAsync(System.Threading.CancellationToken.None).Wait
(); //request token
var requestFactory = new GDataRequestFactory("Some Name");
requestFactory.CustomHeaders.Add(string.Format("Authorization: Bearer {0}",
credential.Token.AccessToken));
SpreadsheetsService myService = new SpreadsheetsService("You App Name");
//create your old service
myService.RequestFactory = requestFactory; //add new request factory to your
old service
SpreadsheetQuery query = new SpreadsheetQuery(); //do the job as you done it
before
SpreadsheetFeed feed = myService.Query(query);
Original comment by a.kopa...@oorraa.net
on 27 May 2015 at 10:38
Also don't forget to grant "youraccount@developer.gserviceaccount.com" access
to your spreadsheet document as you grant permissions for usual users by
pressing Share.
Original comment by a.kopa...@oorraa.net
on 27 May 2015 at 10:49
Looks like this is the right direction for me as well, but now i'm getting
exception when I call Query method.
var query = new SpreadsheetQuery();
query.Title ="some title";
var feed = Service.Query(query);//<- exception
Any idea what could be wrong, or what should I do to check it out?
[XmlException: Root element is missing.]
System.Xml.XmlTextReaderImpl.Throw(Exception e) +69
System.Xml.XmlTextReaderImpl.ParseDocumentContent() +5674146
System.Xml.XmlTextReaderImpl.Read() +213
System.Xml.XmlTextReader.Read() +13
Google.GData.Client.BaseFeedParser.MoveToStartElement(XmlReader reader) +174
Google.GData.Client.AtomFeedParser.Parse(Stream streamInput, AtomFeed feed) +117
[ClientFeedException: Parsing failed]
Google.GData.Client.AtomFeedParser.Parse(Stream streamInput, AtomFeed feed) +202
Google.GData.Client.AtomFeed.Parse(Stream stream, AlternativeFormat format) +273
Google.GData.Client.Service.CreateAndParseFeed(Stream inputStream, Uri uriToUse) +207
Google.GData.Client.Service.Query(FeedQuery feedQuery) +417
Google.GData.Spreadsheets.SpreadsheetsService.Query(SpreadsheetQuery feedQuery) +42
ECosmetorium.Web.BLL.ManagerSpreadsheet.GetSpreadSheet(String url) in c:\Users\Administrator\Source\Workspaces\Clip - Prototype\ECosmetorium.Web\BLL\ManagerSpreadsheet.cs:1104
ECosmetorium.Web.BLL.ManagerSpreadsheet.GetListFeed(String spreadsheetUrl, String worksheetname) in c:\Users\Administrator\Source\Workspaces\Clip - Prototyp\BLL\ManagerSpreadsheet.cs:902
ECosmetorium.Web.BLL.ManagerSpreadsheet.LoadAllProducts() in c:\Users\Administrator\Source\Workspaces\Clip - Prototype\ECosmetorium.Web\BLL\ManagerSpreadsheet.cs:406
b.BLL.ManagerSpreadsheet..ctor() in c:\Users\Administrator\Source\Workspaces\Clip - PrototypeLL\ManagerSpreadsheet.cs:56
eb.Pages.ExportOptimaInvoices.Page_Load(Object sender, EventArgs e) in c:\Users\Administrator\Source\WoProPages\ExportOptimaInvoices.aspx.cs:25
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
System.Web.UI.Control.OnLoad(EventArgs e) +92
System.Web.UI.Control.LoadRecursive() +54
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772
Original comment by magda.se...@gmail.com
on 27 May 2015 at 11:30
thanks Kopa.
I followed all the steps you mention, i get the below error.
"<internalReason>Login Required</internalReason>"
Google.GData.Client.GDataRequestException was unhandled
HResult=-2146233088
Message=Execution of request failed: https://www.google.com/analytics/feeds/data?max-results=10000&dimensions=ga:dimension2,ga:source,ga:medium,ga:campaign,ga:keyword,ga:date,ga:hour&end-date=2015-05-23&ids=ga:19249406&metrics=ga:sessions,ga:goalCompletionsAll,ga:goal2Completions,ga:goal3Completions,ga:goal9Completions,ga:goal10Completions,ga:goal13Completions,ga:goal14Completions&sort=ga:date,ga:hour&start-date=2015-05-22
Source=Google.GData.Client
ResponseString=<?xml version="1.0" encoding="UTF-8"?><errors xmlns="http://schemas.google.com/g/2005"><error><domain>GData</domain><code>required</code><location type="header">Authorization</location><internalReason>Login Required</internalReason></error></errors>
Original comment by APUS...@gmail.com
on 27 May 2015 at 2:38
[deleted comment]
how do I get the dll for using Google.Apis.Auth.OAuth2;. I'm trying to fix
http://www.statslice.com/leveraging-google-docs-with-ssis to get it working
again. Any help would be great
Original comment by Sherwood...@gmail.com
on 27 May 2015 at 3:51
Alright, I figured it out. Step by step instructions as follows - also see the
code I provided below. FYI, this runs in .Net 3.5 and unlike the solution
offered previously there are no new dependencies. You should be up and running
in no time.
1. If you haven't yet create your OAuth 2.0 credentials - I assume you already
know how to get those but here:
a) Log into your Google developer console: http://console.developers.google.com
b) Create a project
c) Create your credentials - use 'installed application'
d) add the APIs that you need - I think Drive API is definitely required. I also added Drive SDK just in case.
2. Copy the code below into VS and edit the first Main() method with your
client key and secret key.
3. Run the app and copy both the new access token and the refresh token. Put
those and your remaining credentials into the second Main() method below.
4. You now should be able to run the second Main() method (just reverse the
naming). From now on that will be all you need - there is no need to re-run the
first Main() method.
BTW, the first Main() method below was found here:
https://developers.google.com/google-apps/spreadsheets/authorize
CODE:
using System;
using Google.GData.Client;
using Google.GData.Spreadsheets;
using Google.GData.Documents;
using System.Configuration;
using System.Collections.Specialized;
namespace GoogleSpreadsheet
{
class GoogleOAutho2
{
private static String folderName = "crazy.ivan";
static void Main(string[] args)
{
////////////////////////////////////////////////////////////////////////////
// STEP 1: Configure how to perform OAuth 2.0
////////////////////////////////////////////////////////////////////////////
// TODO: Update the following information with that obtained from
// https://code.google.com/apis/console. After registering
// your application, these will be provided for you.
string CLIENT_ID = "your_client_id";
// This is the OAuth 2.0 Client Secret retrieved
// above. Be sure to store this value securely. Leaking this
// value would enable others to act on behalf of your application!
string CLIENT_SECRET = "your_secret_key"
// Space separated list of scopes for which to request access.
string SCOPE = "https://www.googleapis.com/auth/drive https://spreadsheets.google.com/feeds https://docs.google.com/feeds";
// This is the Redirect URI for installed applications.
// If you are building a web application, you have to set your
// Redirect URI at https://code.google.com/apis/console.
string REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob";
string TOKEN_TYPE = "refresh";
////////////////////////////////////////////////////////////////////////////
// STEP 2: Set up the OAuth 2.0 object
////////////////////////////////////////////////////////////////////////////
// OAuth2Parameters holds all the parameters related to OAuth 2.0.
OAuth2Parameters parameters = new OAuth2Parameters();
// Set your OAuth 2.0 Client Id (which you can register at
// https://code.google.com/apis/console).
parameters.ClientId = CLIENT_ID;
// Set your OAuth 2.0 Client Secret, which can be obtained at
// https://code.google.com/apis/console.
parameters.ClientSecret = CLIENT_SECRET;
// Set your Redirect URI, which can be registered at
// https://code.google.com/apis/console.
parameters.RedirectUri = REDIRECT_URI;
////////////////////////////////////////////////////////////////////////////
// STEP 3: Get the Authorization URL
////////////////////////////////////////////////////////////////////////////
// Set the scope for this particular service.
parameters.Scope = SCOPE;
parameters.AccessType = "offline"; // IMPORTANT and was missing in the original
parameters.TokenType = TOKEN_TYPE; // IMPORTANT and was missing in the original
// Get the authorization url. The user of your application must visit
// this url in order to authorize with Google. If you are building a
// browser-based application, you can redirect the user to the authorization
// url.
string authorizationUrl = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
Console.WriteLine(authorizationUrl);
Console.WriteLine("Please visit the URL above to authorize your OAuth "
+ "request token. Once that is complete, type in your access code to "
+ "continue...");
parameters.AccessCode = Console.ReadLine();
////////////////////////////////////////////////////////////////////////////
// STEP 4: Get the Access Token
////////////////////////////////////////////////////////////////////////////
// Once the user authorizes with Google, the request token can be exchanged
// for a long-lived access token. If you are building a browser-based
// application, you should parse the incoming request token from the url and
// set it in OAuthParameters before calling GetAccessToken().
OAuthUtil.GetAccessToken(parameters);
string accessToken = parameters.AccessToken;
string refreshToken = parameters.RefreshToken;
Console.WriteLine("OAuth Access Token: " + accessToken + "\n");
Console.WriteLine("OAuth Refresh Token: " + refreshToken + "\n");
////////////////////////////////////////////////////////////////////////////
// STEP 5: Make an OAuth authorized request to Google
////////////////////////////////////////////////////////////////////////////
// Initialize the variables needed to make the request
GOAuth2RequestFactory requestFactory =
new GOAuth2RequestFactory(null, "MySpreadsheetIntegration-v1", parameters);
SpreadsheetsService service = new SpreadsheetsService("MySpreadsheetIntegration-v1");
service.RequestFactory = requestFactory;
// Make the request to Google
// See other portions of this guide for code to put here...
// Instantiate a SpreadsheetQuery object to retrieve spreadsheets.
Google.GData.Spreadsheets.SpreadsheetQuery query = new Google.GData.Spreadsheets.SpreadsheetQuery();
// Make a request to the API and get all spreadsheets.
SpreadsheetFeed feed = service.Query(query);
// Iterate through all of the spreadsheets returned
foreach (SpreadsheetEntry entry in feed.Entries)
{
// Print the title of this spreadsheet to the screen
Console.WriteLine(entry.Title.Text);
}
Console.ReadLine();
}
// once you copied your access and refresh tokens
// then you can run this method directly from now on...
static void MainX(string[] args)
{
GOAuth2RequestFactory requestFactory = RefreshAuthenticate();
SpreadsheetsService service = new SpreadsheetsService("MySpreadsheetIntegration-v1");
service.RequestFactory = requestFactory;
// Instantiate a SpreadsheetQuery object to retrieve spreadsheets.
Google.GData.Spreadsheets.SpreadsheetQuery query = new Google.GData.Spreadsheets.SpreadsheetQuery();
// Make a request to the API and get all spreadsheets.
SpreadsheetFeed feed = service.Query(query);
// Iterate through all of the spreadsheets returned
foreach (SpreadsheetEntry entry in feed.Entries)
{
// Print the title of this spreadsheet to the screen
Console.WriteLine(entry.Title.Text);
}
Console.ReadLine();
public static GOAuth2RequestFactory RefreshAuthenticate() {
OAuth2Parameters parameters = new OAuth2Parameters(){
RefreshToken = "the_refresh_token_you_copied_from_the_CLI_running_the_first_method";
AccessToken = "the_access_token_you_copied_from_the_CLI_running_the_first_method";
ClientId = "your_client_id";
ClientSecret = "your_dirty_little_secret";
Scope = "https://www.googleapis.com/auth/drive https://spreadsheets.google.com/feeds",
AccessType = "offline",
TokenType = "refresh"
};
string authUrl = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
return new GOAuth2RequestFactory(null, "evilspeculator", parameters);
}
}
}
Hope that works for you guys - best of luck!
Original comment by evilstee...@gmail.com
on 27 May 2015 at 5:46
I get same issue with this code. Anybody has a fix?... please
Dim gkey As String = "?key=" & PublicAPIkey
Dim dataFeedUrl As String = "https://www.google.com/analytics/feeds/data" + gkey
Dim service As Google.GData.Analytics.AnalyticsService = New Google.GData.Analytics.AnalyticsService("All Web Site Data")
service.setUserCredentials(username, pass)
Dim query1 As DataQuery = New DataQuery(dataFeedUrl)
query1.Ids = "ga:99999999"
query1.Metrics = "ga:users"
query1.GAStartDate = DateTime.Now.ToString("yyyy-MM-dd")
query1.GAEndDate = DateTime.Now.ToString("yyyy-MM-dd")
query1.StartIndex = 1
Dim dataFeedVisits As DataFeed = service.Query(query1)
For Each entry As DataEntry In dataFeedVisits.Entries
Dim st As String = entry.Title.Text
Dim ss As String = entry.Metrics(0).Value
visits = ss
Next
Original comment by fernando...@gmail.com
on 28 May 2015 at 3:20
I posted detailed steps with the screenshots on Stackoverflow to lay out the
solution that worked for me.
http://stackoverflow.com/a/30497154/732945
Original comment by it-produ...@cantaloupesys.com
on 28 May 2015 at 4:26
Please help me how to retrieve gmail contact details(Only Email ID) in c#.net
(windows service)
I created new project and got client ID, Client Secret code, generated p12key
but still not able to fetch records.. i created project with service account
type.
Original comment by sangeeth...@gmail.com
on 28 May 2015 at 9:42
@Alex - yeah, saw that - brilliant and thanks for doing that. I found a
solution that works for me. Not sure why Sangeeth and Fernando are still having
issues - just follow the steps outlined and that ought to fix it.
Original comment by evilstee...@gmail.com
on 28 May 2015 at 12:05
[deleted comment]
Please Find my code
Am still getting error.
Help me plz
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ASPSnippets.GoogleAPI;
using System.Web.Script.Serialization;
using System.Data;
using Google.GData.Extensions.Apps;
using Google.GData.Client;
using Google.Contacts;
public partial class Default2 : System.Web.UI.Page
{
private static string clientId;
private static string clientSecret;
private static string domain;
private static string applicationName = "Test-OAuth2";
private static string redirectUri = "http://localhost:51598/WebSite1/Default2.aspx";
private static string scopes = "https://www.google.com/m8/feeds/";
protected void Page_Load(object sender, EventArgs e)
{
clientId = "clientid";
clientSecret = "secret code";
domain = "";
OAuth2Parameters parameters = new OAuth2Parameters()
{
ClientId = clientId,
ClientSecret = clientSecret,
RedirectUri = redirectUri,
Scope = scopes
};
string url = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
Console.WriteLine("Authorize URI: " + url);
parameters.AccessCode = Console.ReadLine();
parameters.AccessCode = "Authorize URI: " + url;
OAuthUtil.GetAccessToken(parameters);
// Testing OAuth 2.0 with a Request-based library
RunContactsSample(parameters);
}
private static void RunContactsSample(OAuth2Parameters parameters)
{
try
{
RequestSettings settings = new RequestSettings(applicationName, parameters);
ContactsRequest cr = new ContactsRequest(settings);
Feed<Contact> f = cr.GetContacts();
foreach (Contact c in f.Entries)
{
Console.WriteLine(c.Name.FullName);
}
}
catch (Exception a)
{
Console.WriteLine("A Google Apps error occurred.");
Console.WriteLine();
}
}
}
Original comment by sangeeth...@gmail.com
on 28 May 2015 at 12:33
Original issue reported on code.google.com by
APUS...@gmail.com
on 26 May 2015 at 8:39