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.AHxxxxEJXh6zvQ",
>>  :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.AHxxxxxXh6zvQ, 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:Header><wsdl:RequestHeader 
>> xmlns="https://adwords.google.com/api/adwords/cm/v201302";><userAgent>console 
>> (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, 
>> curb)</userAgent><developerToken>h6Axxxweg</developerToken></wsdl:RequestHeader></env:Header><env:Body><get
>>  
>> xmlns="https://adwords.google.com/api/adwords/cm/v201302
>> "><serviceSelector><fields>Id</fields><fields>Name</fields><fields>Status</fields><ordering><field>Name</field><sortOrder>ASCENDING</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:Header><ResponseHeader
>>  
>> xmlns="https://adwords.google.com/api/adwords/cm/v201302";><requestId>0004e1e1b8b62a800aed881c00001a3b</requestId><serviceName>CampaignService</serviceName><methodName>get</methodName><operations>0</operations><responseTime>23</responseTime><units>0</units></ResponseHeader></soap:Header><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>[AuthenticationError.OAUTH_TOKEN_INVALID
>>  
>> @ ; trigger:'&lt;null&gt;']</faultstring><detail><ApiExceptionFault xmlns="
>> https://adwords.google.com/api/adwords/cm/v201302";><message>[AuthenticationError.OAUTH_TOKEN_INVALID
>>  
>> @ ; 
>> trigger:'&lt;null&gt;']</message><ApplicationException.Type>ApiException</ApplicationException.Type><errors
>>  
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
>> xsi:type="AuthenticationError"><fieldPath></fieldPath><trigger>&lt;null&gt;</trigger><errorString>AuthenticationError.OAUTH_TOKEN_INVALID</errorString><ApiError.Type>AuthenticationError</ApiError.Type><reason>OAUTH_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
adwords-api+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to