Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是否可以使用ruby访问AdSense API?_Ruby On Rails_Ruby_Adsense_Adsense Api - Fatal编程技术网

Ruby on rails 是否可以使用ruby访问AdSense API?

Ruby on rails 是否可以使用ruby访问AdSense API?,ruby-on-rails,ruby,adsense,adsense-api,Ruby On Rails,Ruby,Adsense,Adsense Api,我正在尝试使用ruby访问AdSense管理API。他们建议使用通用的Google API客户端库: 这不是很有帮助,我遇到了错误: 我应该从哪里开始访问我的AdSense数据 提前感谢。不幸的是,我们还没有为AdSense管理API准备任何示例代码。。。然而不过,正如您所指出的,客户端库是通用的,应该与任何较新的GoogleAPI一起使用,因此其他一些示例可能会有所帮助 如果您遇到任何具体问题,请针对这些问题创建一个问题,并向我指出,我会尽力提供帮助 如果您想快速入门,我可以为您制作一个示

我正在尝试使用ruby访问AdSense管理API。他们建议使用通用的Google API客户端库:

这不是很有帮助,我遇到了错误:

我应该从哪里开始访问我的AdSense数据


提前感谢。

不幸的是,我们还没有为AdSense管理API准备任何示例代码。。。然而不过,正如您所指出的,客户端库是通用的,应该与任何较新的GoogleAPI一起使用,因此其他一些示例可能会有所帮助

如果您遇到任何具体问题,请针对这些问题创建一个问题,并向我指出,我会尽力提供帮助

如果您想快速入门,我可以为您制作一个示例,但我们应该确保您遇到的问题与AdSense管理API本身有关,而不仅仅是您链接到的客户端库

[编辑] 以下是一个基于Sinatra的快速示例:

#!/usr/bin/ruby
require 'rubygems'
require 'sinatra'
require 'google/api_client'

FILENAME = 'auth.obj'
OAUTH_CLIENT_ID = 'INSERT_OAUTH2_CLIENT_ID_HERE'
OAUTH_CLIENT_SECRET = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'

before do
  @client = Google::APIClient.new
  @client.authorization.client_id = OAUTH_CLIENT_ID
  @client.authorization.client_secret = OAUTH_CLIENT_SECRET
  @client.authorization.scope = 'https://www.googleapis.com/auth/adsense'
  @client.authorization.redirect_uri = to('/oauth2callback')
  @client.authorization.code = params[:code] if params[:code]

  # Load the access token here if it's available
  if File.exist?(FILENAME)
    serialized_auth = IO.read(FILENAME)
    @client.authorization = Marshal::load(serialized_auth)
  end
  if @client.authorization.refresh_token && @client.authorization.expired?
    @client.authorization.fetch_access_token!
  end
  @adsense = @client.discovered_api('adsense', 'v1.1')
  unless @client.authorization.access_token || request.path_info =~ /^\/oauth2/
    redirect to('/oauth2authorize')
  end
end

get '/oauth2authorize' do
  redirect @client.authorization.authorization_uri.to_s, 303
end

get '/oauth2callback' do
  @client.authorization.fetch_access_token!
  # Persist the token here
  serialized_auth = Marshal::dump(@client.authorization)
  File.open(FILENAME, 'w') do |f|
    f.write(serialized_auth)
  end
  redirect to('/')
end

get '/' do

  call = {
    :api_method => @adsense.reports.generate,
    :parameters => {
      'startDate' => '2011-01-01',
      'endDate' => '2011-08-31',
      'dimension' => ['MONTH', 'CUSTOM_CHANNEL_NAME'],
      'metric' => ['EARNINGS', 'TOTAL_EARNINGS']
    }
  }

  response = @client.execute(call)
  output = ''

  if response && response.data && response.data['rows'] &&
      !response.data['rows'].empty?
    result = response.data

    output << '<table><tr>'
    result['headers'].each do |header|
      output << '<td>%s</td>' % header['name']
    end
    output << '</tr>'

    result['rows'].each do |row|
      output << '<tr>'
      row.each do |column|
        output << '<td>%s</td>' % column
      end
      output << '</tr>'
    end

    output << '</table>'
  else
    output << 'No rows returned'
  end

  output
end
#/usr/bin/ruby
需要“rubygems”
需要“sinatra”
需要“google/api_客户端”
文件名='auth.obj'
OAUTH_CLIENT_ID='在此处插入OAUTH2_CLIENT_ID_'
OAUTH_CLIENT_SECRET='INSERT_OAUTH2_CLIENT_SECRET_HERE'
在做之前
@client=Google::APIClient.new
@client.authorization.client_id=OAUTH_client_id
@client.authorization.client\u secret=OAUTH\u client\u secret
@client.authorization.scope=https://www.googleapis.com/auth/adsense'
@client.authorization.redirect_uri=to(“/oauth2callback”)
@client.authorization.code=params[:code]如果params[:code]
#在此处加载访问令牌(如果可用)
如果File.exist?(文件名)
序列化的_auth=IO.read(文件名)
@client.authorization=Marshal::load(序列化的_auth)
结束
如果@client.authorization.refresh_令牌&&@client.authorization.expired?
@client.authorization.fetch\u access\u令牌!
结束
@adsense=@client.discovered_api('adsense','v1.1')
除非@client.authorization.access_token | | request.path_info=~/^\/oauth2/
重定向到(“/oauth2authorize”)
结束
结束
获取“/oauth2authorize”do
重定向@client.authorization.authorization_uri.to_s,303
结束
获取“/oauth2callback”do
@client.authorization.fetch\u access\u令牌!
#将令牌保存在此处
序列化的_auth=Marshal::dump(@client.authorization)
打开(文件名为“w”)do | f|
f、 写入(序列化的身份验证)
结束
重定向到(“/”)
结束
获取“/”do
呼叫={
:api_method=>@adsense.reports.generate,
:参数=>{
“开始日期”=>“2011-01-01”,
“endDate”=>“2011-08-31”,
“维度”=>[“月份”,“自定义频道名称”],
“指标”=>[“收益”,“总收益”]
}
}
响应=@client.execute(调用)
输出=“”
如果response&&response.data&&response.data['rows']&&
!响应。数据['rows']。是否为空?
结果=响应。数据

输出Hi-Sérgio。我想我现在的问题是法拉第冲突。然而,我非常感谢任何关于如何使用AdSense API按频道获取所有个人收入总额的指导代码。能告诉我如何开始吗?在回复中添加了一个示例。非常感谢Sérgio。我不想告诉你一个日期,但是对Rails示例有什么粗略的估计吗?只是简单的回答一下,我们现在有了合适的Ruby示例。恐怕还是没有栏杆。。。