2012-04-26 105 views
6

我正尝试使用Google Service帐户从我的AppENgine Java应用程序访问Fusion表。这段代码是用来获取OAuth访问令牌:Fusion Table和Google服务帐户

ArrayList<String> scopes = new ArrayList<String>(); 
scopes.add("https://www.googleapis.com/auth/fusiontables"); 
DataAccessService fusionTablesService = EnvironmentServic.getEnvironmentService().getService(DataAccessService.class); 
String token = AppIdentityServiceFactory.getAppIdentityService().getAccessToken(scopes).getAccessToken(); 

我是能够成功地获得访问令牌,但是当我试图执行CREATE TABLE查询,我得到:

<HTML> 
    <HEAD> 
    <TITLE>Login required</TITLE> 
    </HEAD> 
    <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> 
    <H1>Login required</H1> 
    <H2>Error 401</H2> 
    </BODY> 
    </HTML> 

做服务帐户适用于Fusion Tables?

+0

我有相同的情况,因此,问题......很想知道你是否找到了解决方案。如果我早点做,我会让你知道我的解决方案:) – AlejandroVK 2013-05-07 08:03:53

+0

还不是真的。最后,我们希望使用BigQuery和自定义用户界面。 – 2013-05-23 03:06:46

+0

我不得不知道,我设法使用了Fusion Tables,尽管它对请求,单元格等有很多限制,使得它很难用于大数据应用程序。尽管如此,3年后创建混搭 – AlejandroVK 2013-05-23 15:13:17

回答

1

我并不十分熟悉的融合表,但它可能是你需要:

1)授予权限的服务帐户(以下简称“电子邮件地址”在管理控制台中)与访问表格。这可能会发生在https://developers.google.com/appengine/articles/prediction_service_accounts的样本可能有助于作为此过程的起点。

2)登录一个有权访问该表的用户(或者您试图访问其数据的用户),并让他们使用三段式OAuth流程授予应用程序访问权限。如果您访问的是最终用户拥有的数据(例如:[email protected]),那么您可能需要执行此操作。

希望这会有所帮助。

+1

其次是不是一个选项,因为我们需要应用程序本身拥有数据。 首先不会工作,因为apllication不能创建一个带有服务帐户的新表,所以我们没有表来授予访问权限。 – 2012-05-01 18:19:07