3

我收到此错误:序列化延续时出现意外异常(帮助不大)

它是由 FetchUrlApp.fetch(); 称呼。我 akm 使用 Google Apps Script for Sites,而不是 Google 电子表格。该代码在原始实例中有效,但是一旦我将代码复制并粘贴到一个新项目中,我就会收到上述错误消息。我正在访问 Google Docs API。我在其他论坛上读到我需要授权,但我无法获得正确的授权以使代码正常工作。当我第一次运行代码副本时,不会弹出任何提示。

代码发挥:

var oauthConfig = UrlFetchApp.addOAuthService("docs");
oauthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
oauthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope=https://docs.google.com/feeds/");
oauthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
oauthConfig.setConsumerKey(_consumerKey_);
oauthConfig.setConsumerSecret(_consumerSecret_);

var requestData3 = {
  "method": "GET",
  "headers": {"GData-Version": "3.0"},
  "oAuthServiceName": "docs",
  "oAuthUseToken": "always",
};

var url = "https://docs.google.com/feeds/" + userName + "/private/full/-/mine"; 
var result = UrlFetchApp.fetch(url, requestData3); //error occurs, any thoughts?

提前谢谢你,詹姆斯克里姆

4

2 回答 2

0

我的建议是编写一个特殊的函数,它除了调用 Oauth 进程并从脚本编辑器调用一次之外什么都不做。例如,这是我最近用来使授权弹出窗口出现的一个:

function authorize(){
    // function to call from the script editor to authorize googleOauth
    var id=mailtemplatedoc
      var url = 'https://docs.google.com/feeds/';
      var doc = UrlFetchApp.fetch(url+'download/documents/Export?  exportFormat=html&format=html&id='+id,
 googleOAuth_('docs',url)).getContentText();  
    }

编辑:和我忘记的缺失部分:

function googleOAuth_(name,scope) {
  var oAuthConfig = UrlFetchApp.addOAuthService(name);
  oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
  oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
  oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
  oAuthConfig.setConsumerKey('anonymous');
  oAuthConfig.setConsumerSecret('anonymous');
  return {oAuthServiceName:name, oAuthUseToken:"always"};
}
于 2012-06-08T18:33:59.773 回答
0

您必须将 consumerKey 和 consumerSecret 都设置为“匿名”才能触发 3-legged OAuth 流程:

oauthConfig.setConsumerKey("anonymous");
oauthConfig.setConsumerSecret("anonymous");

用这些替换你的两行,授权弹出对话框将出现,允许用户授予对其文档的访问权限。

于 2012-06-08T20:39:04.073 回答