Hi - getting frustrated and hoping someone here can help :) Building a simple web app that will call into the API to get current report data. My HTML page calls a PHP script, which uses the PHP "passthru" command to call a Python script, to access the Google API.
If I execute the PHP script from the command line, everything works as expected - the Python script is called, the report is requested, and data is returned and displayed on the page, and the passthru function ends successfully with a return code of 0. But as soon as I call the PHP script from a browser... the Python bombs out, and the passthru ends with a return code of 1 (fail.) Anybody know why? What am I missing here? The PHP and Python scripts are attached. (Note I deleted my login and credentials from the Python script... you'll need to enter your own in if you wish to run this as-is. It's just a cut-up version of one of the samples that generates reports. I manually create the "headers" JSON because I thought it might have been a permissions issue with the .PKL file but it doesn't seem to make a difference.) -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ 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 adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en
<<attachment: test2.php>>
import os import sys import time import urllib2 # Import appropriate constants and classes from the client library. from adspygoogle.adwords import MIN_API_VERSION from adspygoogle.common import SOAPPY from adspygoogle.adwords.AdWordsClient import AdWordsClient headers = { 'email': 'BLAH', 'password': 'BLAH', 'authToken': 'BLAH', 'clientEmail': 'BLAH', #'clientCustomerId': '1234567890', 'userAgent': 'DotomiTest', 'developerToken': 'BLAH', 'validateOnly': 'n', 'partialFailure': 'n' } config = { 'home': '', #'home': '/opt/web/htdocs/jptak/google/adwords_api_python_14.2.1/', 'log_home': '', #'log_home': '/opt/web/htdocs/jptak/google/adwords_api_python_14.2.1/logs/', #'proxy': 'http://example.com:8080', 'soap_lib': '2', 'xml_parser': '1', 'debug': 'n', 'raw_debug': 'n', 'xml_log': 'n', 'request_log': 'n', 'raw_response': 'n', 'strict': 'y', 'pretty_xml': 'y', 'compress': 'y', 'access': '' } #path = '/opt/web/htdocs/jptak/google/adwords_api_python_14.2.1/' path = '' # Initialize AdWordsClient object. #client = AdWordsClient(path=os.path.join('..','google','adwords_api_python_14.2.1')) #client = AdWordsClient('/opt/web/htdocs/jptak/google/adwords_api_python_14.2.1/') try: #client = AdWordsClient(headers, config, path) client = AdWordsClient(headers) except: print 'Login failed!' exit() # Option 2: Schedule report job while using library's validation logic. # # Construct report job. job = { 'aggregationTypes': ['Daily'], 'startDay': '2011-09-01', 'endDay': '2011-09-07', 'name': 'Test Campaign Report', 'selectedColumns': ['Campaign', 'CampaignId', 'Impressions'], 'selectedReportType': 'Campaign', } # Schedule report and get back report job id. report_service = client.GetReportService('https://adwords.google.com', 'v13') report_url = report_service.GetReportDownloadUrl('2183996788') req = urllib2.Request(report_url[0]) response = urllib2.urlopen(req) the_data = response.read() print the_data