Chrome App Extension无法使用Oauth Javascript

时间:2013-09-04 19:56:28

标签: javascript google-chrome-extension google-chrome-app

我收到此错误“Uncaught TypeError:无法调用未定义的方法'setBadgeText'”

这是我的代码:

这曾经在Chrome 27.0中运行,但现在使用Chrome 29.0似乎已停止运行。我不确定是这个还是.. manifest.json文件在后台加载它。

  var DOCLIST_SCOPE = 'https://docs.google.com/feeds';
  var DOCLIST_FEED = DOCLIST_SCOPE + '/default/private/full/';
  var docs = []; // In memory cache for the user's entire doclist.
  var refreshRate = localStorage.refreshRate || 300; // 5 min default.
  var pollIntervalMin = 1000 * refreshRate;
  var requests = [];

  var oauth = ChromeExOAuth.initBackgroundPage({
    'request_url': 'https://www.google.com/accounts/OAuthGetRequestToken',
    'authorize_url': 'https://www.google.com/accounts/OAuthAuthorizeToken',
    'access_url': 'https://www.google.com/accounts/OAuthGetAccessToken',
    'consumer_key': 'anonymous',
    'consumer_secret': 'anonymous',
    'scope': DOCLIST_SCOPE,
    'app_name': 'App Name'
  });

  function setIcon(opt_badgeObj) {
    if (opt_badgeObj) {
      var badgeOpts = {};
      if (opt_badgeObj && opt_badgeObj.text != undefined) {
        badgeOpts['text'] = opt_badgeObj.text;
      }
      if (opt_badgeObj && opt_badgeObj.tabId) {
        badgeOpts['tabId'] = opt_badgeObj.tabId;
      }
      chrome.browserAction.setBadgeText(badgeOpts);
    }
  };

  function clearPendingRequests() {
    for (var i = 0, req; req = requests[i]; ++i) {
      window.clearTimeout(req);
    }
    requests = [];
  };

  function logout() {
    docs = [];
    setIcon({'text': ''});
    oauth.clearTokens();
    clearPendingRequests();
  };

1 个答案:

答案 0 :(得分:0)

如果您的代码基于OAuth tutorial,则 问题很可能是http://crbug.com/310870引起的,这是样本中的一个错误。 (由于Chrome中的错误,之前的示例工作正常。)

确保您的扩展程序中属于OAuth流的所有资源都包含在清单的“web_accessible_resources”键中。对于联系人样本,需要包含此片段。

"web_accessible_resources": [
    "chrome_ex_oauth.html",
    "chrome_ex_oauthsimple.html"
],