从Google小工具执行FusionERT时执行“无效凭据”

时间:2013-01-17 22:09:15

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

我们有一个Google小工具,通过Fusion Table API与用户的Google帐户连接到Fusion Tables。它执行SELECT和INSERT。

我们使用OAuth1(opensocial的shindig库)构建了小工具。它适用于Fusion Table API的弃用版本。当我们将它迁移到新的PAPI时,选择qworks很好,因为不需要使用OAuth2进行身份验证。但是对于INSERT,这是必要的。 opensocial的文档尚未完全更新:http://docs.opensocial.org/display/OSREF/OpenSocial+Specification+Considerations

我无法弄清楚如何成功使用OAuth2来执行插入操作。我们拥有在域级别读/写的API权限,并且用户拥有Fusion表的所有者权限。

我得到的错误是说“证书无效”非常模糊,我不明白为什么。

这是我们的小工具标题:

<OAuth>
    <Service name="google">
    <Access url="https://www.google.com/accounts/OAuthGetAccessToken" method="GET" />
    <Request url="https://www.google.com/accounts/OAuthGetRequestToken?scope=https://www.googleapis.com/auth/fusiontables%20https://docs.google.com/feeds/default/private"
         method="GET" />
    <Authorization url="https://www.google.com/accounts/OAuthAuthorizeToken?oauth_callback=http://oauth.gmodules.com/gadgets/oauthcallback" />
    </Service>
</OAuth>

我不确定如何更新,所以我添加了另一个标题:

<OAuth2>
    <Service name="google">
    <Authorization url="https://www.google.com/accounts/OAuthAuthorizeToken?oauth_callback=http://oauth.gmodules.com/gadgets/oauth2callback" />
    </Service>
</OAuth2>

当我们拨打电话时,我们会执行以下操作:

options = {};
options[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;
options[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
options[gadgets.io.RequestParameters.POST_DATA] = postData;
options[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.OAUTH2;
options[gadgets.io.RequestParameters.HEADERS] = {'Authorization':'{encrypted fusiontable key}'};  //not sure if this helps but its extra
options[gadgets.io.RequestParameters.OAUTH_SERVICE_NAME] = "google";
options[gadgets.io.RequestParameters.OAUTH_USE_TOKEN] = "always";

URL = https://www.googleapis.com/fusiontables/v1/query?key={encrypted fusiontable key} &client_id={id number}”;
postData=”sql=INSERT…”;
gadgets.io.makeRequest(URL, handlerWrapper, options);

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您正在执行写入请求,则需要提供编码用户访问该表的权限的oauth令牌。看起来这可能是gadgets.io.RequestParameters.OAUTH_REQUEST_TOKEN。该密钥用于从公共表进行读访问。此外,您可能需要将OAUTH_SERVICE_NAME设置为“fusiontables”。