首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Google Analytics API :缺少必需的参数: grant_type

Google Analytics API :缺少必需的参数: grant_type
EN

Stack Overflow用户
提问于 2016-04-30 13:50:36
回答 1查看 648关注 0票数 1

因此,我使用data (基于sinatra的框架)创建了一个仪表板,我需要从Analytics API中获取数据,并将其显示在仪表板中。所以我有下面的ruby代码,oauth返回这个错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "error" : "invalid_request",
  "error_description" : "Required parameter is missing: grant_type"
}

下面是代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
require 'google/api_client'
require 'date'

# Update these to match your own apps credentials
service_account_email = ENV['chrezworld@dashing-project-1297.iam.gserviceaccount.com'] # Email of service account
key_file = 'key.p12' # File containing your private key
key_secret = 'notasecret' # Password to unlock private key
profileID = ENV['77142386'] # Analytics profile ID.

# Get the Google API client
client = Google::APIClient.new(
  :application_name => ENV['dashing project'], 
  :application_version => '0.01'
)

visitors = []

# Load your credentials for the service account
key = Google::APIClient::KeyUtils.load_from_pkcs12(key_file, key_secret)
client.authorization = Signet::OAuth2::Client.new(
  :token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
  :audience => 'https://accounts.google.com/o/oauth2/token',
  :scope => 'https://www.googleapis.com/auth/analytics.readonly',
  :issuer => service_account_email,
  :signing_key => key)

# Start the scheduler
SCHEDULER.every '5s', :first_in => 0 do

  # Request a token for our service account
  client.authorization.fetch_access_token!

  # Get the analytics API
  analytics = client.discovered_api('analytics','v3')

  # Execute the query
  visitCount = client.execute(:api_method => analytics.data.realtime.get, :parameters => { 
    'ids' => "ga:" + profile_id,
    'metrics' => "ga:activeVisitors",
  })

  visitors << { x: Time.now.to_i, y: visits.to_i }

  # Update the dashboard
  send_event('visitor_count_real_time', points: visitors)

end
EN

回答 1

Stack Overflow用户

发布于 2016-05-01 05:54:21

我不确定这个例子有多老了。Ruby API的文档似乎很少,由于它仍处于alpha阶段,因此可能会有一些变化。我最近做了一个快速的ruby示例,它在最新版本的API 0.9.6上工作得很好。

首先,您需要进入Google Cloud控制台,并为您的服务帐户导出一个JSON密钥文件。那就把它放在露比能看得懂的地方。您需要将其路径传递给ENV。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
require 'google/apis/analytics_v3'
require 'googleauth'

ENV['GOOGLE_APPLICATION_CREDENTIALS'] = "service_account_credentials.json"

Analytics = Google::Apis::AnalyticsV3
analytics = Analytics::AnalyticsService.new
scopes = [Analytics::AUTH_ANALYTICS_READONLY]
analytics.authorization = Google::Auth.get_application_default(scopes)
accounts = analytics.list_accounts
accounts.items.each do |a| puts a.name end

我发现这是使用Service帐户查询Ruby API的最简单方法。

此外,请确保将访问Analytics帐户的权限授予您的服务帐户。

在那里,您可以查询记录了here的其他方法。

对于实时,你可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
puts analytics.get_realtime_data("ga:XXXXX", "ga:activeVisitors").totals_for_all_results
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36955706

复制
相关文章
查找-散列查找
散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。查找时,根据这个确定的对应关系找到给定值key的映射f(key),若查找集合中存在这个记录,则必定在f(key)的位置上。
全栈程序员站长
2022/08/28
1.4K0
查找-散列查找
散列查找和哈希查找_散列检索
散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。建立了关键字与存储位置的映射关系,公式如下:
全栈程序员站长
2022/11/15
8990
散列查找
散列同顺序、链接和索引一样,是又一种数据存储方法。散列存储的方法是:以数据集合中的每个元素的关键字k为自变量,通过一种函数h(k)计算出函数值,把这个值用做一块连续存储空间(即数组或文件空间)中的元素存储位置(即下标),将该元素存储到这个下标位置上。散列存储中使用的函数h(k)被称为散列函数或哈希函数,它实现关键字到存储位置(地址)的映射(或称转换),h(k)被称为散列地址或哈希地址;使用的数组或文件空间是对数据集合进行散列存储的地址空间,所以被称为散列表或哈希表。在散列表上进行查找时,首先根据给定的关键字k,用与散列存储时使用的同一散列函数h(k)计算出散列地址,然后按此地址从散列表中取出对应的元素。
全栈程序员站长
2022/08/27
1.2K0
散列查找
Java快速输入输出使用详解(解决Java输入输出超时问题)
  Scanner类输入时,虽然方式很简单,但是输入实在太慢了,经常遇到大的数据量时候就超时。(你觉得数据有点多时就用快速输入即可)
全栈程序员站长
2022/08/24
1.2K0
jq eq
我们使用jquery选择器时如果有多个结果,我们可以使用eq函数选择指定下标的元素
阿超
2022/08/21
1.9K0
jq eq
Pandas 查找,丢弃列值唯一的列
数据清洗很重要,本文演示如何使用 Python Pandas 来查找和丢弃 DataFrame 中列值唯一的列,简言之,就是某列的数值除空值外,全都是一样的,比如:全0,全1,或者全部都是一样的字符串如:已支付,已支付,已支付…
萝 卜
2022/05/12
5.7K0
Pandas 查找,丢弃列值唯一的列
数据的输入、输出
int printf(const char *format…) : 功能:格式化字符串输出
Twcat_tree
2022/11/30
8970
有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别
最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多:
用户4645519
2020/09/07
2.2K0
有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别
python的标准输入,输出,错误输出。
    python中的sys模块有标准输入,标准输出,以及标准错误输出的方法。
py3study
2020/01/13
3.6K0
Python输入输出
一.转义符 #1. 基础 name = input() print(name) print("xxx" * 5) #2. 输出 print("\txxx") #\t制表符,\n空格 print(name.replace('原','新')) #将旧字符替换为新字符 print("Our cat %s weighs %s pounds" % (cat, weight)) print(r"asda\sda") #原始字符,显示\等转义 print("""asdasda #多行输出 asdad asd sadasd
陈不成i
2021/06/21
1.3K0
java 输入和输出
1.输出 System.out.println(); //输出且换行 System.out.print(); //输出且不换行 System.out.printf(); // 格式化输出 2.输入 import java.util.Scanner //导入包 public class HelloWorld{ public static void main(String[] args){ Scanner scanner =new Scanner(System.in); //
小小咸鱼YwY
2020/06/19
2.4K0
Linux 输入输出
ls -al > list 将结果写入list文件中,list没有将创建
Dylan Liu
2019/07/01
4.1K0
python 变量,输入,输出
2.0 注释 python的注释方法 """ 多行注释 """ #单行注释 2.1 变量 问:为什么要有变量? 为某个值创建一个“外号”,以后在使用时候通过此外号就可以直接调用。 创建一个变量 name = "gkf" #name是变量名 等号就是声明(或赋值) "gkf"是变量的值 age = 18 #age是标量名 等号就是声明(或赋值) 18是变量的值 2.2 变量名命名规范 可以使用字母数字下滑线组合 如: name ="gkf" num_1 = 318 或 _ho
py3study
2020/01/15
2.3K0
python 变量,输入,输出
Python输入和输出
input函数:获取用户输入,保存成一个字符串。重要的话,说两遍,input函数的返回值是一个字符串类型。哪怕你输入的是个数字1,返回给你的只会是字符串“1”,而不是 整数1 。
汤贤
2020/05/18
1.6K0
Python输入和输出
数据结构:图文详解 - 动态查找、静态查找、散列查找
对于二分查找存在一定的优 & 缺点,所以衍生出2种二分查找的变式方法:插值查找 & 斐波那契查找。具体如下:
Carson.Ho
2020/09/24
2.5K0
数据结构:图文详解 - 动态查找、静态查找、散列查找
Go 输入输出
fmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。
看、未来
2022/06/19
3350
标准输入输出
通过管道把history命令的输出传递给grep命令,即查找已执行命令中出现cat的行
三产
2021/01/13
7330
python输入与输出
%表示格式化操作,% 前面的字符串中的%s(格式符) 使用 % 后面的字符串 'abc' 替换。
py3study
2020/01/09
1.3K0
输入输出接口
输入输出接口 常见的I/O接口: 南桥(现在叫PCH)、显卡 I/O接口 作用: 数据缓冲 解决CPU和外设之间的速度差距 提供联络信息 协调与同步数据交换过程 信号与信息格式的转换 模/数、数/模转换,串/并、并/串转换,电平转换 设备选择 中断管理 可编程功能 通讯: 需要“握手(Handshaking)信号”:总是成对出现,在数据传送中起着定时协调与联络作用。采用“握手”方式的数据传送,每一过程必须都有应答,彼此进行确认。 输出:并行数据输出(外设>IO接口)、输出准备好(外设>IO接口)
斯武丶风晴
2019/12/16
7440
点击加载更多

相似问题

jQuery:使用eq重新排列列表项

43

使用.eq查找所选div的顺序

10

使用JS查找表项

22

Jquery中的动画:使用eq重新排列列表项?

21

使用JQuery eq设置附加输入的值

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文