2012-05-29 31 views
2

我想通过Apps脚本使用电子邮件设置API来管理Google网站上的所有用户签名。我之前使用Documents Data API进行双腿OAuth并且工作得很好。我目前卡在电子邮件设置API的身份验证步骤。电子邮件设置API身份验证

代码例如:

// Setup OAuthServiceConfig 
var oAuthConfig = UrlFetchApp.addOAuthService("signature"); 
oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken"); 
oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken"); 
//I left scope empty to gain access to all APIs would this scope work scope=https://apps-apis.google.com/a/feeds/emailsettings/2.0/ 
oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken"); 
oAuthConfig.setConsumerKey("domain.com"); 
oAuthConfig.setConsumerSecret("consumerSecret"); 

// Setup optional parameters to point request at OAuthConfigService. The "signature" 
// value matches the argument to "addOAuthService" above. 
var options = 
{ 
    "method" : method, 
    "oAuthServiceName" : "signature", 
    "oAuthUseToken" : "always" 
}; 

var result = UrlFetchApp.fetch("https://apps-apis.google.com/a/feeds/emailsettings/2.0/"+domainName+"/"+userName+"/signature", options); 
Logger.log(result); 

我得到这个错误: “意外的错误(线37)”,它是 VAR结果= UrlFetchApp.fetch(“https://apps-apis.google.com/ a/feeds/emailsettings/2.0 /“+ domainName +”/“+ userName +”/ signature“,options);

对我在做什么有什么想法吗?

作用域在这里:http://support.google.com/a/bin/answer.py?hl=en&answer=162105

回答

2

希望这会帮助你。这是一个工作示例这将让用户的HTML签名或更新HTML签名

/* 
---------------------------------------------------------------------------------- 
This function will update the HTML signature of a user. 
Input will be jason data 
To disable signature, pass an empty string as signature value 
sample parameter 
ob = {user='hps', signature='<b>Regards</b><br>Waqar'} 

To disable signature 
ob = {user='hps', signature=''} 
---------------------------------------------------------------------------------- 
*/ 
function updateSignature(ob) { 
    //ob = {}; 
    //ob.user = "hps"; 
    //ob.signature = "<b>Regards</b><br>Waqar"; 

    var base = 'https://apps-apis.google.com/a/feeds/emailsettings/2.0/'; 
    var xmlRaw = '<?xml version="1.0" encoding="utf-8"?>'+ 
     '<atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:apps="http://schemas.google.com/apps/2006">'+ 
     '<apps:property name="signature" value="'+htmlEncode(ob.signature)+'" />'+ 
     '</atom:entry>'; 
    var fetchArgs = googleOAuth_('emailSetting',base); 
    fetchArgs.method = 'PUT'; 
    fetchArgs.payload = xmlRaw; 
    fetchArgs.contentType = 'application/atom+xml'; 
    var domain = UserManager.getDomain(); 
    var url = base+domain+'/'+ob.user+'/signature'; 
    var urlFetch = UrlFetchApp.fetch(url, fetchArgs); 
    var status = urlFetch.getResponseCode(); 
    return status; 
} 


//----------------------------------------------------------------------------------------------------------- 
//This function will retreive Signature settings as json. 
/*Sample returned object 
{user=hps, signature=<b>Regards</b><br>Waqar} 
*/ 
//----------------------------------------------------------------------------------------------------------- 
function retrieveSignature(user) { 
    var user = 'hps'; 
    var base = 'https://apps-apis.google.com/a/feeds/emailsettings/2.0/'; 
    var fetchArgs = googleOAuth_('emailSetting',base); 
    fetchArgs.method = 'GET'; 
    var domain = UserManager.getDomain(); 
    var url = base+domain+'/'+user+'/signature?alt=json'; 
    var urlFetch = UrlFetchApp.fetch(url, fetchArgs); 
    var jsonString = urlFetch.getContentText(); 
    var jsonArray = Utilities.jsonParse(jsonString).entry.apps$property; 
    var ob = {}; 
    ob.user = user; 
    for(var i in jsonArray){ 
    ob[jsonArray[i].name] = jsonArray[i].value; 
    } 
    return ob; 
} 
//Google oAuthConfig.. 
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"}; 
} 


//This function will escape '<' and '>' characters from a HTML string 
function htmlEncode(str){ 
    str = str.replace(/</g,'&lt;'); 
    return str.replace(/>/g,'&gt;') 
} 
相关问题