【问题标题】:How to authenticate in Fusion tables with Oauth v2如何使用 Oauth v2 在 Fusion 表中进行身份验证
【发布时间】:2013-05-07 22:46:41
【问题描述】:

我正在尝试从以下位置执行示例:

https://code.google.com/p/google-api-java-client/source/browse?repo=samples#hg%2Ffusiontables-cmdline-sample

这基本上是一个关于如何验证和使用 Fusion API 的示例。我无法让它工作......在这一点上:

// authorize
return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");

浏览器显示“错误:redirect_uri_mismatch”。

这里的奇怪之处在于,使用 Oauth 进行身份验证的其他示例(google plus API 和云存储之一)不使用与此相同的方法,基本上包括使用您可以下载一次的 JSON 文件已通过 API 控制台创建了一个服务帐户。

实际上,有一个问题使用了这个例子中的方法:

Google Fusion Tables 400 invalid_grant

我的主要问题是......哪一个是正确的?我不确定这个

第二个是...此示例在 JSON 文件中查找名为 client-secret 的项,而我没有该项。我不认为这是导致代码无法运行的原因,但我想知道这个客户机密是什么......

非常感谢您对如何进行的一些见解

谢谢! 亚历克斯

【问题讨论】:

    标签: oauth-2.0 google-fusion-tables google-oauth


    【解决方案1】:

    好吧,如果有人和我有同样的情况……我会发布我发现有效的解决方案。我所做的基本上是修改了示例(特别感谢 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 表文档页面中找到,这将为我节省一些宝贵的时间 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多