我正在尝试使用Google服务帐户从我的AppENgine Java App访问Fusion表。此代码段用于获取OAuth访问令牌:
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 :(得分:1)
我对Fusion Tables并不十分熟悉,但您可能需要:
1)授予服务帐户的权限(在管理控制台中找到“电子邮件地址”)以访问该表。这可能会发生。https://developers.google.com/appengine/articles/prediction_service_accounts处的样本可能有助于此过程的起点。
2)登录有权访问该表(或您尝试访问其数据)的用户,并让他们使用三足OAuth流授权访问该应用程序。如果您正在访问最终用户拥有的数据(例如:joe@gmail.com),那么您可能需要这样做。
希望这有帮助。