我正在尝试执行以下示例:
这基本上是如何验证和使用Fusion API的示例。我无法让它发挥作用......此时:
// authorize
return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
浏览器显示“错误:redirect_uri_mismatch”。
这里奇怪的是,使用Oauth(谷歌加API和云存储)进行身份验证的其他示例不使用与此相同的方法,基本上包括使用您可以下载一次的JSON文件已通过API控制台创建服务帐户。
实际上,有一个问题使用了这个例子中的方法:
Google Fusion Tables 400 invalid_grant
我的主要问题是......哪一个是正确的?我不确定这个
第二个是......这个例子在JSON文件中查找一个名为client-secret的项目,我没有。我不认为这是导致代码不可行的原因,但我想知道这个客户秘密的东西是什么......
非常感谢有关如何进行的一些见解
谢谢! 亚历
答案 0 :(得分:0)
好吧,如果有人遇到和我一样的情况......我会发布我发现的解决方案。我所做的基本上是修改了这个例子(特别感谢Christian Junk的工作)所以当涉及到身份验证时,它看起来更像是其他的例子(存储和加号)。
HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
// check for valid setup
if (SERVICE_ACCOUNT_EMAIL.startsWith("Enter ")) {
System.err.println(SERVICE_ACCOUNT_EMAIL);
System.exit(1);
}
String p12Content = Files.readFirstLine(new File("key.p12"), Charset.defaultCharset());
if (p12Content.startsWith("Please")) {
System.err.println(p12Content);
System.exit(1);
}
// service account credential (uncomment setServiceAccountUser for domain-wide delegation)
GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(FusiontablesScopes.FUSIONTABLES)
.setServiceAccountPrivateKeyFromP12File(new File("key.p12"))
// .setServiceAccountUser("user@example.com")
.build();
// set up global FusionTables instance
fusiontables = new Fusiontables.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).setApplicationName(APPLICATION_NAME).build();
这与原始示例的方法不同,但它适用于我,我可以列出表,创建新表,填充它们并删除它们。
我只是希望在Oauth和Fusion表格文档页面中更容易找到这些示例,这样可以节省一些宝贵的时间:)