原题:
我试图向Google Analytics API提出请求。我正在浏览Hello Analytics教程,试图复制这些步骤。无论我尝试什么,我似乎都无法成功地验证。
教程中有以下内容:
打开您创建的名为helloanalyticsapi.java
的文件,并添加以下方法:
private static Analytics initializeAnalytics() throws Exception {
// Authorization.
Credential credential = OAuth2Native.authorize(
HTTP_TRANSPORT, JSON_FACTORY, new LocalServerReceiver(),
Arrays.asList(AnalyticsScopes.ANALYTICS_READONLY));
// Set up and return Google Analytics API client.
return Analytics.builder(HTTP_TRANSPORT, JSON_FACTORY)
.setApplicationName("Google-Analytics-Hello-Analytics-API-Sample")
.setHttpRequestInitializer(credential)
.build();
}
当用户遇到此脚本时,应用程序将尝试打开默认浏览器,并将用户导航到Google.com上的URL。此时,将提示用户登录并授予应用程序对其数据的访问权限。一旦被授予,应用程序将尝试从浏览器窗口读取代码,然后关闭该窗口。
如果您只调用不需要用户数据的API,比如Google自定义搜索API,那么API键可能更容易实现。但是,如果您的应用程序已经使用了OAuth2.0访问令牌,那么也不需要生成API密钥。事实上,如果OAuth2.0访问令牌已经与相应的项目相关联,Google会忽略传递的API密钥。
我找不到许多只使用API密钥的auth流的代码示例--我找到的大多数代码都显示了使用客户端ID和下载的。p12文件,例如GoogleCredential
Javadoc。我能找到的一个示例应用程序是Google的Books示例应用程序。无论如何,以下是我所尝试的(模仿教程中的第一个请求,该请求从管理API获得帐户列表):
Analytics analytics =
new Analytics.Builder(httpTransport, jsonFactory, null)
.setApplicationName("Dev API Access")
.build();
Management.Accounts.List list =
analytics.management().accounts().list().setKey(apiKey);
Accounts accounts = list.execute();
其中“Dev API Access”是我的API控制台仪表板中的“Name”字段。API密钥是限制在我的IP地址的服务器密钥。此操作失败,响应如下:
401 Unauthorized
{
"code": 401,
"errors": [
{
"domain": "global",
"location": "Authorization",
"locationType": "header",
"message": "Login Required",
"reason": "required"
}
],
"message": "Login Required"
}
我也试过这个:
Analytics analytics =
new Analytics.Builder(httpTransport, jsonFactory, null)
.setApplicationName("Dev API Access")
.setGoogleClientRequestInitializer(new AnalyticsRequestInitializer(apiKey))
.build();
Management.Accounts.List list = analytics.management().accounts().list();
Accounts accounts = list.execute();
Credential credential =
new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(serviceAccountId)
.setServiceAccountScopes(AnalyticsScopes.ANALYTICS_READONLY)
.setServiceAccountPrivateKeyFromP12File(new File(p12FilePath))
.setServiceAccountUser(serviceAccountUser)
.build();
Analytics analytics =
new Analytics.Builder(httpTransport, jsonFactory, credential)
.setApplicationName("Dev API Access")
.build();
Management.Accounts.List list = analytics.management().accounts().list();
Accounts accounts = list.execute();
400 Bad Request
{
"error": "invalid_grant"
}
“无效授权”是什么意思,如何成功地进行身份验证(理想情况下没有OAuth2)?
问题内容: 我有3台机器: 文件所在的服务器 运行REST服务的服务器(泽西岛) 可以访问第二台服务器但不能访问第一台服务器的客户端(浏览器) 我如何直接(不将文件保存在第二台服务器上)将文件从第一台服务器下载到客户端计算机? 从第二台服务器可以获取 ByteArrayOutputStream 来从第一台服务器获取文件,我可以使用REST服务将此流进一步传递给客户端吗? 这样行吗? 因此,基本上我
问题内容: 我正在使用Java开发SIP应用程序,并且想知道目前最常用的SIP库是什么。 MJSIP? 问题答案: 据我所知,它的JAIN- SIP 。顺便说一句,很高兴了解MjSip。您可能对JBoss Mobicent的 关注感兴趣,当前用户指南尚不完整。并且您不会在Mobicent上找到太多帮助。 或者,正如metadaddy说在这里,“你可能想看看SailFin -它是一个SIP Serv
问题内容: 在上一个问题中如何在Java 8中动态进行过滤?StuartMarks给出了一个很好的答案,并提供了一些有用的实用程序来处理从流中选择topN和topPercent。 我将从他的原始答案中将它们包括在这里: 我的问题是: [1]如何从具有一定数量项目的流中获取3到7的顶级项目,因此,如果流中有A1,A2 .... A10中的项目,则调用 将返回{A3,A4,A5,A6,A7} 我能想到
问题内容: 将字符串拆分为流的 最佳 方法是什么? 我看到了这些变化: 我的优先事项是: 坚固性 可读性 性能 一个完整的可编译示例: 问题答案: / 由于返回数组,因此我始终建议您使用流式处理数组的规范用法。 / 是一个 varargs 方法,它恰好接受一个数组,这是由于varargs方法是通过数组实现的,并且在将varargs引入Java以及改型为接受可变参数的现有方法时,存在兼容性方面的问题
问题内容: 我是Java 8的新手,不确定如何使用流及其排序方法。如果我的地图如下,如何使用Java 8按值对地图进行排序以仅获取前10个条目。 我知道在Java 8之前,我们可以按以下链接进行排序:http://codingdict.com/questions/116310 问题答案: 您可以随时开始阅读文档和一些 教程。 参考 http://www.leveluplunch.com/java/
问题内容: 我有以下情况 我已经合并所有列表从从对象地图。 知道如何使用Java 8流API吗? 问题答案: 我想这就是您要寻找的。 例如:
问题内容: 我需要使用bouncycastle提供程序使用pgp加密流。我可以找到的所有示例都是关于获取纯文本文件并对其进行加密的,但是我没有文件,因此务必不要将纯文本写入磁盘。 我见过的大多数方法都在使用 希望传递纯文本的PGPUtil.writeFileToLiteralData。我宁愿传递byte []或inputStream。 有人可以指出一个例子吗 从字符串/字节[] /输入流开始 将所
问题内容: 我一直在寻找新的rx java 2,但我不确定我是否已经明白了这个主意… 我知道我们所拥有的并没有支持。 因此,基于例如,可以说我有有: 在大约128个值之后,这将崩溃,这很明显我消耗的速度比获取项目要慢。 但是,我们有相同的 即使我延迟使用它,它仍然完全不会崩溃。为了工作,可以说我放了一个运算符,崩溃已经消失了,但并不是所有值都被发出。 因此,我目前在脑海中找不到答案的基本问题是,为