I'm not sure what happened, but it looks like my token somehow got
disabled or expired? I ran into the problem today as I was testing and
everything was working yesterday, but then I tried today and nothing
works anymore. I even went through the Adwords example code and
modified to add my credentials and it still didn't work. Here is the
code:

#!/usr/bin/ruby
#
# Copyright 2009, Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This code sample illustrates how to fetch all the client accounts
under an
# MCC account, and then iteratively retrieves information about each
account.

require 'rubygems'
gem 'soap4r', '= 1.5.8'
require 'adwords4r'


def main
  begin
    # AdWords::AdWordsCredentials.new will read a credentials file
from
    # ENV['HOME']/adwords.properties when called without parameters.
    # The latest versioned release of the API will be assumed.
    #
    # Credentials can be either for the production or Sandbox
environments.
    # Production environment credentials overview:
    # http://www.google.com/apis/adwords/developer/index.html
    # Sandbox environment credentials overview:
    # http://www.google.com/apis/adwords/developer/adwords_api_sandbox.html
    #
    # Instead of reading them from a file, the credentials can be
    # specified inline as a hash:
    #
    # creds = {
    #     'developerToken' => '[email protected]++usd',
    #     'useragent' => 'Sample User Agent',
    #     'password' => 'password',
    #     'email' => '[email protected]',
    #     'clientEmail' => '[email protected]',
    #     'applicationToken' => 'IGNORED',
    #     'environment' => 'SANDBOX',
    # }
    # adwords = AdWords::API.new(AdWords::AdWordsCredentials.new
(creds))
    adwords = AdWords::API.new(AdWords::AdWordsCredentials.new(
      'useragent' => 'my user agent',
      'developerToken' => '***mytoken***',
      'applicationToken' => '***mytoken***,
      'password' => 'mypass',
      'email' => 'myemail,
      'clientEmail' => 'myemail'
    ))

    # Clear out the clientEmail header temporarily so that we run
under the
    # context of the MCC user.
    adwords.credentials.set_header('clientEmail', '')

    account_srv = adwords.get_service(13, 'Account')
    client_accounts = account_srv.getClientAccounts

    if client_accounts.length > 0 then
      client_accounts.each do |client_account|
        # Set the clientEmail header to each account's login email so
that API
        # calls are made in the context of that account.
        adwords.credentials.set_header('clientEmail', client_account)
        account_info = account_srv.getAccountInfo.getAccountInfoReturn

        puts 'Client Email: %s' % client_account
        if ! account_info.descriptiveName.empty? then
          puts 'Client Name: %s' % account_info.descriptiveName
        end
        puts 'Client ID: %s' % account_info.customerId
        puts
      end
    else
      puts 'There are no client accounts beneath this account.'
    end

  rescue Errno::ECONNRESET, SOAP::HTTPStreamError, SocketError => e
    # This exception indicates a connection-level error.
    # In general, it is likely to be transitory.
    puts 'Connection Error: %s' % e
    puts 'Source: %s' % e.backtrace.first

  rescue AdWords::Error::UnknownAPICall => e
    # This exception is thrown when an unknown SOAP method is invoked.
    puts e
    puts 'Source: %s' % e.backtrace.first

  rescue AdWords::Error::ApiError => e
    # This exception maps to receiving a SOAP Fault back from the
service.
    # The e.soap_faultstring_ex, e.code_ex, and potentially
e.trigger_ex
    # attributes are the most useful, but other attributes may be
populated
    # as well. To display all attributes, the following can be used:
    #
    # e.instance_variables.each do |var|
    #   value = e.instance_variable_get(var)
    #   if ! value.nil?
    #     puts '%s => %s' % [var, value]
    #   end
    # end
    puts 'SOAP Error: %s (code: %d)' % [e.soap_faultstring_ex,
e.code_ex]
    puts 'Trigger: %s' % e.trigger_ex unless e.trigger_ex.nil?
    puts 'Source: %s' % e.backtrace.first

  ensure
    # Display API unit usage info. This data is stored as a class
variable
    # in the AdWords::API class and accessed via static methods.
    # total_units() returns a running total of units used in the scope
of the
    # current program. last_units() returns the number used in the
last call.
    # puts
    # puts '%d API units consumed total (%d in last call).' %
    #     [adwords.total_units, adwords.last_units]
  end
end


if __FILE__ == $0
  # The adwords4r library can log all SOAP requests and responses to
files.
  # This is often useful for debugging purposes.
  # To enable this, set the ADWORDS4R_DEBUG environement varaible to
'true'.
  # This can be done either from your operating system environment or
via
  # code, as done below.
  ENV['ADWORDS4R_DEBUG'] = 'false'

  main
end

It gave me this error:

SOAP Error: The developer token is invalid. (code: 42)
Trigger: mytoken
Source: grr.rb:64:in `main'

Obviously I took my token out of this message. :)

Anyone know what's up??

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to