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.NETwebsite. >>>>>> >>>>>> 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
