Hello All, Any special configuration required for Running OAuth 1.0a running succesfully? I am trying to run one of my report download code, but it is giving error :
*Error Message: <eye3-stackless title='AuthServer User Error OAUTH_TOKEN_HEADER_INVALID'/> AuthenticationError.OAUTH_TOKEN_HEADER_INVALID @ ; trigger:'<null>'; errorDetails:message=Invalid Header Service[ReportInfoService.get]* * * Please note : It is only has error from few server only. This same file is working on my localhost setup and also from two of my server. Thanks, chirag On Monday, April 2, 2012 6:41:27 PM UTC+5:30, Anash P. Oommen wrote: > > Hi Simon, > > Nice to know. If you have 2-legged authentication turned on, then you need > to generate an application-specific password as discussed at > http://adwordsapi.blogspot.com/2011/02/authentication-changes-with-2-step.html > . > > Cheers, > Anash P. Oommen, > AdWords API Advisor. > > On Monday, 2 April 2012 14:29:17 UTC+5:30, baynezy wrote: >> >> Anash, >> Thanks very much for your help on this. I think I have solved the >> problem, I think it is because my Gmail account has the 2-legged >> authentication turned on. I am using a different account now and it is now >> working. >> >> Thanks. >> >> Simon >> >> On Friday, 30 March 2012 05:30:45 UTC+1, Anash P. Oommen wrote: >>> >>> Hi Simon, >>> >>> v201101 got sunset last month. Try v201109.GetCampaigns as the command >>> line version. (Or in general, apiversion.codeexamplename as command line >>> argument). I'll update the video appropriately or leave comments on the >>> youtube video. >>> >>> Cheers, >>> Anash >>> >>> On Thursday, 29 March 2012 21:23:29 UTC+5:30, baynezy wrote: >>>> >>>> Anash, >>>> Thanks very much this is starting to come together. I have set up the >>>> Web.config as requested and I am trying to run >>>> http://code.google.com/p/google-api-adwords-dotnet/source/browse/trunk/examples/adwords/csharp/v201109/BasicOperations/GetCampaigns.cs. >>>> >>>> I am adding adding a command line argument of 'v201101.GetAllCampaigns' as >>>> you specify in your YouTube video >>>> http://www.youtube.com/watch?v=XRqbqtsGO_g&feature=player_embedded. >>>> However, every time I run it it just list the help text to the console. It >>>> is like it does not see he command line arguments. I also compiled the exe >>>> and ran it from the command line with 'v201101.GetAllCampaigns' and it >>>> also >>>> just outputs the help text. It is like I am having a bad brain moment, and >>>> cannot see why this is failing. I would appreciate some thoughts on what I >>>> am doing wrong if you can think of something obvious. >>>> >>>> On Thursday, 29 March 2012 13:32:16 UTC+1, Anash P. Oommen wrote: >>>>> >>>>> Hi Simon, >>>>> >>>>> Almost forgot to mention: since you are making calls to the sandbox, >>>>> you need to initialize the sandbox and use the clientCustomerIds in it. >>>>> >>>>> 1. In your Web.config, you should have email/password as your gmail >>>>> email/password. Comment out clientCustomerId. >>>>> 2. Call GetCampaigns.cs. Reference example is at >>>>> http://code.google.com/p/google-api-adwords-dotnet/source/browse/trunk/examples/adwords/csharp/v201109/BasicOperations/GetCampaigns.cs. >>>>> >>>>> This will initialize your sandbox. >>>>> 3. Call GetAccountHiearchy.cs. Example here: >>>>> http://code.google.com/p/google-api-adwords-dotnet/source/browse/trunk/examples/adwords/csharp/v201109/AccountManagement/GetAccountHierarchy.cs. >>>>> >>>>> This will return the sandbox accounts that were created for you. >>>>> 4. Copy one of those customerIds into your >>>>> web.config's clientCustomerId key, and uncomment the key. >>>>> 5. Run any code example. >>>>> >>>>> Anash >>>>> >>>>> On Thursday, 29 March 2012 17:57:07 UTC+5:30, Anash P. Oommen wrote: >>>>>> >>>>>> Hi Simon, >>>>>> >>>>>> I see... let's get a code example running in that case... >>>>>> >>>>>> The easiest approach is as follows: >>>>>> >>>>>> 1. Make sure your Web.config looks exactly as follows: >>>>>> http://code.google.com/p/google-api-adwords-dotnet/source/browse/trunk/examples/adwords/csharp/App.config. >>>>>> >>>>>> In case you have other stuff in your Web.config, you need to merge the >>>>>> two. >>>>>> >>>>>> 2. Enter your MCC email, password, clientCustomerId, developerToken >>>>>> in your Web.config. >>>>>> 3. In your code, do >>>>>> >>>>>> AdWordsUser user = new AdWordsUser();// this loads all configs from >>>>>> your Web.Config >>>>>> CampaignService service = (CampaignService) >>>>>> user.GetService(AdWordsService.v201109.CampaignService); >>>>>> // Build your campaign, operation, do service.mutate(). Refer to the >>>>>> examples folder in the downloaded zip for various code examples. >>>>>> >>>>>> 4. Run your website. If you face any issues, let me know, along with >>>>>> the error you are facing. >>>>>> >>>>>> Cheers, >>>>>> Anash >>>>>> >>>>>> On Thursday, 29 March 2012 17:21:25 UTC+5:30, baynezy wrote: >>>>>>> >>>>>>> Anash, >>>>>>> Again thank you for your quick response. I am building a web >>>>>>> application that when new items are added to our system we can >>>>>>> potentially >>>>>>> automatically add a new Campaign to the our AdWords account and then >>>>>>> subsequently new AdGroups, Ads and Keywords. I am at the early stages >>>>>>> really learning the capabilities of the API and I am having a few >>>>>>> problems >>>>>>> getting going. I downloaded the the .Net client library from here >>>>>>> http://code.google.com/p/google-api-adwords-dotnet/ and I am using >>>>>>> that as the basis of starting my own proof of concept project. Mainly >>>>>>> my >>>>>>> issues are compounded by the fact that all the examples I can find are >>>>>>> a >>>>>>> mix of different versions and so I am a little unclear on how to get >>>>>>> going. >>>>>>> >>>>>>> I think what I really need help with is how to get the AdWordsUser >>>>>>> authenticated in a way that I can the access the API from then on with >>>>>>> no >>>>>>> challenge. I have no requirement to use OAuth as this will be an >>>>>>> internal >>>>>>> service using just our company AdWords account. >>>>>>> >>>>>>> What I have so far is based on a combination of this Java example >>>>>>> http://code.google.com/apis/adwords/docs/first-request.html and >>>>>>> this article you wrote >>>>>>> http://code.google.com/p/google-api-adwords-dotnet/wiki/HowToUseAdWordsUser >>>>>>> >>>>>>> Here is my code:- >>>>>>> >>>>>>> public ActionResult Create() >>>>>>> { >>>>>>> var headers = new Dictionary<string, string> >>>>>>> { >>>>>>> {"CompanyName", "MyCompany.com"}, >>>>>>> {"Email", "[email protected]"}, >>>>>>> {"Password", "password"}, >>>>>>> {"DeveloperToken", " myemail @gmail.com++USD"} >>>>>>> }; >>>>>>> var user = new AdWordsUser(headers); >>>>>>> var service = >>>>>>> (CampaignService)user.GetService(AdWordsService.v201109.CampaignService, >>>>>>> " >>>>>>> https://sandbox.google.com"); >>>>>>> var budget = new Budget >>>>>>> { >>>>>>> period = BudgetBudgetPeriod.DAILY, >>>>>>> amount = new Money(), >>>>>>> deliveryMethod = BudgetBudgetDeliveryMethod.STANDARD >>>>>>> }; >>>>>>> >>>>>>> var campaign = new Campaign >>>>>>> { >>>>>>> name = "Simon Campaign", >>>>>>> status = CampaignStatus.PAUSED, >>>>>>> biddingStrategy = new ManualCPC(), >>>>>>> budget = budget >>>>>>> }; >>>>>>> var operation = new CampaignOperation {operand = campaign, @operator >>>>>>> = Operator.ADD}; >>>>>>> var operations = new[] { operation }; >>>>>>> var result = service.mutate(operations); >>>>>>> >>>>>>> return View(); >>>>>>> >>>>>>> This is an ASP.NET MVC 3 web application, when executing the code >>>>>>> above I get an AuthTokenException. When I dig into the error it is >>>>>>> because >>>>>>> I am getting an System.Net.WebException {"The remote server returned an >>>>>>> error: (403) Forbidden."}. I get exactly the same response when I >>>>>>> remove >>>>>>> the second argument from the GetService call on AdWordsUser. >>>>>>> >>>>>>> If you could point me in the right direction I would be eternally >>>>>>> grateful. >>>>>>> >>>>>>> On Thursday, 29 March 2012 12:20:14 UTC+1, Anash P. Oommen wrote: >>>>>>>> >>>>>>>> Hi Simon, >>>>>>>> >>>>>>>> AFAIK, OAuth doesn't present a Captcha challenge, ClientLogin API >>>>>>>> does. Sounds like a misconfiguration to me. OAuth 1.0a access tokens >>>>>>>> don't >>>>>>>> expire, so you need to get the user to enter the credentials once to >>>>>>>> generate an accessToken, save it, and then keep reusing it for future >>>>>>>> requests. The other option is to link the client account under your >>>>>>>> MCC, >>>>>>>> and use your credentials to generate AuthTokens. That way, you won't >>>>>>>> have >>>>>>>> to ask for your client's credentials at all, but the linking process >>>>>>>> is >>>>>>>> manual. >>>>>>>> >>>>>>>> Could you provide some more details of your application? E.g. is it >>>>>>>> a web application? >>>>>>>> >>>>>>>> Cheers, >>>>>>>> Anash P. Oommen, >>>>>>>> AdWords API Advisor. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Thursday, 29 March 2012 16:31:31 UTC+5:30, baynezy wrote: >>>>>>>>> >>>>>>>>> Anash, >>>>>>>>> Thanks very much for your help on this. I think I have gone down >>>>>>>>> the >>>>>>>>> wrong path here. The OAuth version of the API presents me with a >>>>>>>>> CAPTCH challenge that I need to forward to the user. However, I am >>>>>>>>> not >>>>>>>>> creating a client application for users to manage their AdWords >>>>>>>>> accounts where this process makes perfect sense as I would not >>>>>>>>> want to >>>>>>>>> store their account credentials. However, I am building an >>>>>>>>> integration >>>>>>>>> with my application so I can programmatically create campaigns, >>>>>>>>> adgroups, etc. and this CAPTCHA challenge makes this not feasible >>>>>>>>> as >>>>>>>>> this will not be in response to a user action but an automated >>>>>>>>> process. Is there a way to interact with the API where I can use my >>>>>>>>> credentials that I know, without having to deal with manually >>>>>>>>> authenticating? >>>>>>>>> >>>>>>>>> Thanks again. >>>>>>>>> >>>>>>>>> Simon Baynes >>>>>>>>> >>>>>>>>> On Thursday, March 29, 2012 10:04:12 AM UTC+1, Anash P. Oommen >>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Hi Simon, >>>>>>>>>> >>>>>>>>>> There are couple more pieces to getting OAuth to work on an >>>>>>>>>> ASP.NET website. >>>>>>>>>> >>>>>>>>>> 1. There's some initialization code that should go in your >>>>>>>>>> Global.asax. : >>>>>>>>>> http://code.google.com/p/google-api-adwords-dotnet/source/browse/trunk/examples/adwords/csharp/oauth/Global.asax.cs >>>>>>>>>> >>>>>>>>>> 2. There should be some mechanism to trigger the OAuth signup, as >>>>>>>>>> shown here: >>>>>>>>>> >>>>>>>>>> http://code.google.com/p/google-api-adwords-dotnet/source/browse/trunk/examples/adwords/csharp/oauth/GetAllCampaigns.aspx.cs#58 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Hope this helps: Let me know if you have more questions. >>>>>>>>>> >>>>>>>>>> Cheers, >>>>>>>>>> Anash P. Oommen, >>>>>>>>>> AdWords API Advisor. >>>>>>>>>> >>>>>>>>>> On Wednesday, 28 March 2012 20:09:13 UTC+5:30, baynezy wrote: >>>>>>>>>>> >>>>>>>>>>> I am trying (with not much luck) to access the Google AdWords >>>>>>>>>>> API using the .Net Client >>>>>>>>>>> Library<http://code.google.com/p/google-api-adwords-dotnet/>to >>>>>>>>>>> access their >>>>>>>>>>> SandBox <http://code.google.com/apis/adwords/docs/sandbox.html>API. >>>>>>>>>>> >>>>>>>>>>> Here is my code:- >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> // create campaign >>>>>>>>>>> var campaign = new Campaign >>>>>>>>>>> { >>>>>>>>>>> name = "Simon's Campaign", >>>>>>>>>>> status = >>>>>>>>>>> CampaignStatus.ACTIVE, >>>>>>>>>>> servingStatus = >>>>>>>>>>> ServingStatus.SERVING, >>>>>>>>>>> budget = new Budget >>>>>>>>>>> { >>>>>>>>>>> period = >>>>>>>>>>> BudgetBudgetPeriod.DAILY, >>>>>>>>>>> amount = new >>>>>>>>>>> Money >>>>>>>>>>> >>>>>>>>>>> { >>>>>>>>>>> >>>>>>>>>>> microAmount = 100000 >>>>>>>>>>> >>>>>>>>>>> }, >>>>>>>>>>> >>>>>>>>>>> deliveryMethod = BudgetBudgetDeliveryMethod.STANDARD >>>>>>>>>>> }, >>>>>>>>>>> adServingOptimizationStatus = >>>>>>>>>>> AdServingOptimizationStatus.OPTIMIZE, >>>>>>>>>>> frequencyCap = new >>>>>>>>>>> FrequencyCap >>>>>>>>>>> { >>>>>>>>>>> >>>>>>>>>>> impressions = 100000, >>>>>>>>>>> >>>>>>>>>>> timeUnit = TimeUnit.MINUTE, >>>>>>>>>>> level >>>>>>>>>>> = Level.CAMPAIGN >>>>>>>>>>> } >>>>>>>>>>> }; >>>>>>>>>>> var operation = new CampaignOperation {@operator = >>>>>>>>>>> Operator.ADD, operand = campaign}; >>>>>>>>>>> var operations = new CampaignOperation[1]; >>>>>>>>>>> operations[0] = operation; >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> // get service >>>>>>>>>>> var user = new AdWordsUser(); >>>>>>>>>>> var url = Request.Url.GetLeftPart(UriPartial.Path); >>>>>>>>>>> var config = user.Config as AdWordsAppConfig; >>>>>>>>>>> user.OAuthProvider = new AdsOAuthNetProvider( >>>>>>>>>>> config.OAuthConsumerKey, >>>>>>>>>>> config.OAuthConsumerSecret, >>>>>>>>>>> AdWordsService.GetOAuthScope(user.Config as >>>>>>>>>>> AdWordsAppConfig), >>>>>>>>>>> url, >>>>>>>>>>> Session.SessionID >>>>>>>>>>> ); >>>>>>>>>>> >>>>>>>>>>> var service = (CampaignService) >>>>>>>>>>> user.GetService(AdWordsService.v201109.CampaignService); >>>>>>>>>>> var page = service.mutate(operations); >>>>>>>>>>> >>>>>>>>>>> When I run this I get an `AdWordsApiException` with an >>>>>>>>>>> InnerException `AuthenticationError.OAUTH_TOKEN_HEADER_INVALID @ >>>>>>>>>>> Service[CampaignService.mutate]` >>>>>>>>>>> >>>>>>>>>>> Now I have the following in my `Web.config`:- >>>>>>>>>>> >>>>>>>>>>> <!-- Note: For testing purposes, you can use the OAuth >>>>>>>>>>> consumer key/secret as anonymous/anonymous.--> >>>>>>>>>>> <add key="AuthorizationMethod" value="OAuth"/> >>>>>>>>>>> <add key="OAuthConsumerKey" value="anonymous"/> >>>>>>>>>>> <add key="OAuthConsumerSecret" value="anonymous"/> >>>>>>>>>>> <!-- Uncomment this key if you want to use v13 sandbox. --> >>>>>>>>>>> <!-- <add key="LegacyAdWordsApi.Server" value=" >>>>>>>>>>> https://sandbox.google.com"/> --> >>>>>>>>>>> <!-- Uncomment this key if you want to use AdWords API >>>>>>>>>>> sandbox. --> >>>>>>>>>>> <add key="AdWordsApi.Server" value=" >>>>>>>>>>> https://adwords-sandbox.google.com"/> >>>>>>>>>>> >>>>>>>>>>> As I understand it this is set up correctly, what am I missing? >>>>>>>>>>> >>>>>>>>>>> Any help would be very gratefully received!!! >>>>>>>>>>> >>>>>>>>>> -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API Forum" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en
