Re: OAUTH_TOKEN_INVALID ruby client

2013-07-22 Thread Takeshi Hagikura (AdWords API Team)
Hi Matthew,

Looks like the access_token (it expires in one hour) was issued at 
2013-07-19 14:56:06 -0400.
So at the time you made a request, the access token seemed to expire. 

If you make the oauth token request in offline mode, the response should 
contain refresh_token (that never expires). 
Using that you can get a new access toke if the existing access token is 
about to expire. 

I'm asking the ruby library maintainer on how to make a offline oauth token 
request in more detail. 

Best,
- Takeshi, AdWords API Team

On Saturday, July 20, 2013 4:01:13 AM UTC+9, Matthew Ledom wrote:

 I keep receiving this error when I try to use a service. In this instance 
 I'm use the campaign service. I had everything working with ClientLogin and 
 found that Reports are only supported with OAUTH2 so I'm trying to get that 
 implemented.

 I have setup my app to retrieve a offline token via the browser redirect 
 work flow. I have also setup my adword model to request a new access token 
 using the provided refresh token from the previous step. I can take that 
 token and use it in the following code:

 api.authorize(:oauth2_token = token )

 where token:
 {access_token=ya29.AxxxXh6zvQ,
  token_type=Bearer,
  expires_in=3600,
  id_token=
   eyJhbxxxB3MO4}

 this returns:
 {:access_token=ya29.AHEJXh6zvQ,
  :refresh_token=nil,
  :issued_at=2013-07-19 14:56:06 -0400,
  :expires_in=3600,
  :id_token=
   eyJhbxxxLB3MO4}

 When I use this api object to call the campaign service I get the output 
 provided below. The reporting download is the final piece needed to 
 approval and I've searched all over this group and the web and can't find 
 anything that helps. I'm using the latest versions of the ruby gem: 
 google-ads-common (0.9.3) and google-adwords-api (0.9.3) 

 SOAP request: 
 https://adwords.google.com/api/adwords/cm/v201302/CampaignService
 Accept-Encoding: gzip,deflate, SOAPAction: get, User-Agent: bw_console 
 (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, 
 curb), Authorization: Bearer ya29.AHxXh6zvQ, Content-Type: 
 text/xml;charset=UTF-8, Content-Length: 837
 ?xml version=1.0 encoding=UTF-8?env:Envelope xmlns:xsd=
 http://www.w3.org/2001/XMLSchema; xmlns:xsi=
 http://www.w3.org/2001/XMLSchema-instance; xmlns:wsdl=
 https://adwords.google.com/api/adwords/cm/v201302; xmlns:env=
 http://schemas.xmlsoap.org/soap/envelope/;env:Headerwsdl:RequestHeader 
 xmlns=https://adwords.google.com/api/adwords/cm/v201302;userAgentconsole 
 (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, 
 curb)/userAgentdeveloperTokenh6Axxxweg/developerToken/wsdl:RequestHeader/env:Headerenv:Bodyget
  
 xmlns=https://adwords.google.com/api/adwords/cm/v201302
 serviceSelectorfieldsId/fieldsfieldsName/fieldsfieldsStatus/fieldsorderingfieldName/fieldsortOrderASCENDING/sortOrder/ordering/serviceSelector/get/env:Body/env:Envelope
 HTTPI executes HTTP POST using the curb adapter
 SOAP response (status 500):
 soap:Envelope 
 xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;soap:HeaderResponseHeader
  
 xmlns=https://adwords.google.com/api/adwords/cm/v201302;requestId0004e1e1b8b62a800aed881c1a3b/requestIdserviceNameCampaignService/serviceNamemethodNameget/methodNameoperations0/operationsresponseTime23/responseTimeunits0/units/ResponseHeader/soap:Headersoap:Bodysoap:Faultfaultcodesoap:Server/faultcodefaultstring[AuthenticationError.OAUTH_TOKEN_INVALID
  
 @ ; trigger:'lt;nullgt;']/faultstringdetailApiExceptionFault xmlns=
 https://adwords.google.com/api/adwords/cm/v201302;message[AuthenticationError.OAUTH_TOKEN_INVALID
  
 @ ; 
 trigger:'lt;nullgt;']/messageApplicationException.TypeApiException/ApplicationException.Typeerrors
  
 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; 
 xsi:type=AuthenticationErrorfieldPath/fieldPathtriggerlt;nullgt;/triggererrorStringAuthenticationError.OAUTH_TOKEN_INVALID/errorStringApiError.TypeAuthenticationError/ApiError.TypereasonOAUTH_TOKEN_INVALID/reason/errors/ApiExceptionFault/detail/soap:Fault/soap:Body/soap:Envelope
 Content-Type: text/xml; charset=UTF-8, Date: Fri, 19 Jul 2013 18:44:49 
 GMT, Expires: Fri, 19 Jul 2013 18:44:49 GMT, Cache-Control: private, 
 max-age=0, X-Content-Type-Options: nosniff, X-Frame-Options: SAMEORIGIN, 
 X-XSS-Protection: 1; mode=block, Server: GSE, Transfer-Encoding: chunked
 AdwordsApi::V201302::CampaignService::ApiException: 
 [AuthenticationError.OAUTH_TOKEN_INVALID @ ; trigger:'null']

 Thank you to anyone that can help. I really need to get this integration 
 completed.


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

Re: OAUTH_TOKEN_INVALID ruby client

2013-07-22 Thread Matthew Ledom
Thanks I would like to know the correct way to do this. I have not found an 
example the uses a refresh token that is stored in a db. I have seen the 
setup_oauth2.rb example where the refresh token is written to a file. 
Creating a new AdwordsApi::Api with the yml file and setting credentials 
does not seem to work.

On Monday, July 22, 2013 2:13:02 AM UTC-4, Takeshi Hagikura (AdWords API 
Team) wrote:

 Hi Matthew,

 Looks like the access_token (it expires in one hour) was issued at 
 2013-07-19 14:56:06 -0400.
 So at the time you made a request, the access token seemed to expire. 

 If you make the oauth token request in offline mode, the response should 
 contain refresh_token (that never expires). 
 Using that you can get a new access toke if the existing access token is 
 about to expire. 

 I'm asking the ruby library maintainer on how to make a offline oauth 
 token request in more detail. 

 Best,
 - Takeshi, AdWords API Team

 On Saturday, July 20, 2013 4:01:13 AM UTC+9, Matthew Ledom wrote:

 I keep receiving this error when I try to use a service. In this instance 
 I'm use the campaign service. I had everything working with ClientLogin and 
 found that Reports are only supported with OAUTH2 so I'm trying to get that 
 implemented.

 I have setup my app to retrieve a offline token via the browser redirect 
 work flow. I have also setup my adword model to request a new access token 
 using the provided refresh token from the previous step. I can take that 
 token and use it in the following code:

 api.authorize(:oauth2_token = token )

 where token:
 {access_token=ya29.AxxxXh6zvQ,
  token_type=Bearer,
  expires_in=3600,
  id_token=
   eyJhbxxxB3MO4}

 this returns:
 {:access_token=ya29.AHEJXh6zvQ,
  :refresh_token=nil,
  :issued_at=2013-07-19 14:56:06 -0400,
  :expires_in=3600,
  :id_token=
   eyJhbxxxLB3MO4}

 When I use this api object to call the campaign service I get the output 
 provided below. The reporting download is the final piece needed to 
 approval and I've searched all over this group and the web and can't find 
 anything that helps. I'm using the latest versions of the ruby gem: 
 google-ads-common (0.9.3) and google-adwords-api (0.9.3) 

 SOAP request: 
 https://adwords.google.com/api/adwords/cm/v201302/CampaignService
 Accept-Encoding: gzip,deflate, SOAPAction: get, User-Agent: bw_console 
 (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, 
 curb), Authorization: Bearer ya29.AHxXh6zvQ, Content-Type: 
 text/xml;charset=UTF-8, Content-Length: 837
 ?xml version=1.0 encoding=UTF-8?env:Envelope xmlns:xsd=
 http://www.w3.org/2001/XMLSchema; xmlns:xsi=
 http://www.w3.org/2001/XMLSchema-instance; xmlns:wsdl=
 https://adwords.google.com/api/adwords/cm/v201302; xmlns:env=
 http://schemas.xmlsoap.org/soap/envelope/;env:Headerwsdl:RequestHeader 
 xmlns=https://adwords.google.com/api/adwords/cm/v201302;userAgentconsole 
 (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, 
 curb)/userAgentdeveloperTokenh6Axxxweg/developerToken/wsdl:RequestHeader/env:Headerenv:Bodyget
  
 xmlns=https://adwords.google.com/api/adwords/cm/v201302
 serviceSelectorfieldsId/fieldsfieldsName/fieldsfieldsStatus/fieldsorderingfieldName/fieldsortOrderASCENDING/sortOrder/ordering/serviceSelector/get/env:Body/env:Envelope
 HTTPI executes HTTP POST using the curb adapter
 SOAP response (status 500):
 soap:Envelope 
 xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;soap:HeaderResponseHeader
  
 xmlns=https://adwords.google.com/api/adwords/cm/v201302;requestId0004e1e1b8b62a800aed881c1a3b/requestIdserviceNameCampaignService/serviceNamemethodNameget/methodNameoperations0/operationsresponseTime23/responseTimeunits0/units/ResponseHeader/soap:Headersoap:Bodysoap:Faultfaultcodesoap:Server/faultcodefaultstring[AuthenticationError.OAUTH_TOKEN_INVALID
  
 @ ; trigger:'lt;nullgt;']/faultstringdetailApiExceptionFault xmlns=
 https://adwords.google.com/api/adwords/cm/v201302;message[AuthenticationError.OAUTH_TOKEN_INVALID
  
 @ ; 
 trigger:'lt;nullgt;']/messageApplicationException.TypeApiException/ApplicationException.Typeerrors
  
 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; 
 xsi:type=AuthenticationErrorfieldPath/fieldPathtriggerlt;nullgt;/triggererrorStringAuthenticationError.OAUTH_TOKEN_INVALID/errorStringApiError.TypeAuthenticationError/ApiError.TypereasonOAUTH_TOKEN_INVALID/reason/errors/ApiExceptionFault/detail/soap:Fault/soap:Body/soap:Envelope
 Content-Type: text/xml; charset=UTF-8, Date: Fri, 19 Jul 2013 18:44:49 
 GMT, Expires: Fri, 19 Jul 2013 18:44:49 GMT, Cache-Control: private, 
 max-age=0, X-Content-Type-Options: nosniff, X-Frame-Options: SAMEORIGIN, 
 X-XSS-Protection: 1; mode=block, Server: GSE, Transfer-Encoding: chunked
 AdwordsApi::V201302::CampaignService::ApiException: 
 [AuthenticationError.OAUTH_TOKEN_INVALID @ ; trigger:'null']

 Thank you to anyone that can help. I really need to get this integration 
 completed.



-- 
-- 

Re: OAUTH_TOKEN_INVALID ruby client

2013-07-22 Thread Takeshi Hagikura (AdWords API Team)
Hi, 

Looks like you are already talking with the ruby library maintainer in 
another mail thread. 
Please update the thread about it. 

Best,
- Takeshi, AdWords API Team

On Tuesday, July 23, 2013 2:53:29 AM UTC+9, Matthew Ledom wrote:

 Thanks I would like to know the correct way to do this. I have not found 
 an example the uses a refresh token that is stored in a db. I have seen the 
 setup_oauth2.rb example where the refresh token is written to a file. 
 Creating a new AdwordsApi::Api with the yml file and setting credentials 
 does not seem to work.

 On Monday, July 22, 2013 2:13:02 AM UTC-4, Takeshi Hagikura (AdWords API 
 Team) wrote:

 Hi Matthew,

 Looks like the access_token (it expires in one hour) was issued at 
 2013-07-19 14:56:06 -0400.
 So at the time you made a request, the access token seemed to expire. 

 If you make the oauth token request in offline mode, the response should 
 contain refresh_token (that never expires). 
 Using that you can get a new access toke if the existing access token is 
 about to expire. 

 I'm asking the ruby library maintainer on how to make a offline oauth 
 token request in more detail. 

 Best,
 - Takeshi, AdWords API Team

 On Saturday, July 20, 2013 4:01:13 AM UTC+9, Matthew Ledom wrote:

 I keep receiving this error when I try to use a service. In this 
 instance I'm use the campaign service. I had everything working with 
 ClientLogin and found that Reports are only supported with OAUTH2 so I'm 
 trying to get that implemented.

 I have setup my app to retrieve a offline token via the browser redirect 
 work flow. I have also setup my adword model to request a new access token 
 using the provided refresh token from the previous step. I can take that 
 token and use it in the following code:

 api.authorize(:oauth2_token = token )

 where token:
 {access_token=ya29.AxxxXh6zvQ,
  token_type=Bearer,
  expires_in=3600,
  id_token=
   eyJhbxxxB3MO4}

 this returns:
 {:access_token=ya29.AHEJXh6zvQ,
  :refresh_token=nil,
  :issued_at=2013-07-19 14:56:06 -0400,
  :expires_in=3600,
  :id_token=
   eyJhbxxxLB3MO4}

 When I use this api object to call the campaign service I get the output 
 provided below. The reporting download is the final piece needed to 
 approval and I've searched all over this group and the web and can't find 
 anything that helps. I'm using the latest versions of the ruby gem: 
 google-ads-common (0.9.3) and google-adwords-api (0.9.3) 

 SOAP request: 
 https://adwords.google.com/api/adwords/cm/v201302/CampaignService
 Accept-Encoding: gzip,deflate, SOAPAction: get, User-Agent: bw_console 
 (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, 
 curb), Authorization: Bearer ya29.AHxXh6zvQ, Content-Type: 
 text/xml;charset=UTF-8, Content-Length: 837
 ?xml version=1.0 encoding=UTF-8?env:Envelope xmlns:xsd=
 http://www.w3.org/2001/XMLSchema; xmlns:xsi=
 http://www.w3.org/2001/XMLSchema-instance; xmlns:wsdl=
 https://adwords.google.com/api/adwords/cm/v201302; xmlns:env=
 http://schemas.xmlsoap.org/soap/envelope/;env:Headerwsdl:RequestHeader 
 xmlns=https://adwords.google.com/api/adwords/cm/v201302;userAgentconsole
  
 (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, 
 curb)/userAgentdeveloperTokenh6Axxxweg/developerToken/wsdl:RequestHeader/env:Headerenv:Bodyget
  
 xmlns=https://adwords.google.com/api/adwords/cm/v201302
 serviceSelectorfieldsId/fieldsfieldsName/fieldsfieldsStatus/fieldsorderingfieldName/fieldsortOrderASCENDING/sortOrder/ordering/serviceSelector/get/env:Body/env:Envelope
 HTTPI executes HTTP POST using the curb adapter
 SOAP response (status 500):
 soap:Envelope 
 xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;soap:HeaderResponseHeader
  
 xmlns=https://adwords.google.com/api/adwords/cm/v201302;requestId0004e1e1b8b62a800aed881c1a3b/requestIdserviceNameCampaignService/serviceNamemethodNameget/methodNameoperations0/operationsresponseTime23/responseTimeunits0/units/ResponseHeader/soap:Headersoap:Bodysoap:Faultfaultcodesoap:Server/faultcodefaultstring[AuthenticationError.OAUTH_TOKEN_INVALID
  
 @ ; trigger:'lt;nullgt;']/faultstringdetailApiExceptionFault xmlns=
 https://adwords.google.com/api/adwords/cm/v201302;message[AuthenticationError.OAUTH_TOKEN_INVALID
  
 @ ; 
 trigger:'lt;nullgt;']/messageApplicationException.TypeApiException/ApplicationException.Typeerrors
  
 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; 
 xsi:type=AuthenticationErrorfieldPath/fieldPathtriggerlt;nullgt;/triggererrorStringAuthenticationError.OAUTH_TOKEN_INVALID/errorStringApiError.TypeAuthenticationError/ApiError.TypereasonOAUTH_TOKEN_INVALID/reason/errors/ApiExceptionFault/detail/soap:Fault/soap:Body/soap:Envelope
 Content-Type: text/xml; charset=UTF-8, Date: Fri, 19 Jul 2013 18:44:49 
 GMT, Expires: Fri, 19 Jul 2013 18:44:49 GMT, Cache-Control: private, 
 max-age=0, X-Content-Type-Options: nosniff, X-Frame-Options: SAMEORIGIN, 
 X-XSS-Protection: 1; mode=block, Server: GSE,