使用Google服务帐户从上下文小工具中访问gmail api

时间:2015-05-06 17:21:44

标签: javascript oauth gmail-api gmail-contextual-gadgets

我希望能够在gmail上下文小工具中使用javascript访问gmail / calendar api(而不是将请求弹出到其他地方)。
我还想使用服务帐户进行身份验证,以便通过小工具设置/域控制访问,并且不会自动提示用户输入任何详细信息。

关于这个领域的文档是大量过时且令人困惑的信息,因此很难确定这是否可能。

我已经通过了许多不同的方法,但收效甚微。

根据此处https://developers.google.com/gadgets/docs/basic?csw=1,不再支持OAuth小工具。

。在注意到评论并放弃评论之前,花了很多时间在这种方法上无处可去

接下来,尝试使用来自https://developers.google.com/gadgets/docs/reference/#gadgets.io的gadgets.io.makeRequest,但这似乎不适合我想要的,太多的自己的解决方案。我没有成功,所以放弃了尝试别的东西。

接下来尝试了gapi.auth.authorize https://developers.google.com/api-client-library/javascript/features/authentication这个看起来很有希望,但是我找不到任何关于在服务帐户中使用它的信息,我只是在尝试使用它时遇到错误(但至少错误感觉就像向前移动!)。

我目前的代码是

function connectToGmail() {
    gapi.client.setApiKey(API_KEY);
    window.setTimeout(checkAuth,1);
}

function checkAuth() {
    var parameters = {
        client_id: OAUTH2_CLIENT_ID,
        scope: OAUTH2_SCOPES,
        immediate: true,
        output: 'embedded'
    };
    gapi.auth.authorize(parameters, function(result) {
        console.log('login complete');
        console.log(gapi.auth.getToken());
    });
}

但永远不会调用授权回调 尝试过将hd:添加到参数中,以及我在寻找细节时看到的一些其他未记录的值。

在各种实验中,我通常在浏览器控制台中出现此错误

  

拒绝在一个框架中显示“https://accounts.google.com/o/oauth2/auth?client_id= **********。googleusercontent.com& response_type = token& state = 1847286098%7C0.1045275236”因为它设置了'X-Frame-选项'到'SAMEORIGIN'。

很公平,我理解这个问题的原因部分,但希望它通过回调给我错误 - 我无意在这里打开任何东西 - 这就是我想使用服务帐户的原因!

如果我手动导航到该URL,我会看到破碎的机器人页面

  
      
  1. 这是一个错误   错误:invalid_client
      没有注册资料
  2.         

    请求详细信息
      立即=真
      RESPONSE_TYPE =记号
      范围= https://www.googleapis.com/auth/gmail.readonly
      REDIRECT_URI = PostMessage的
      代理= oauth2relay869439690
      状态= 1847286098个| 0.1045275236
      原点= https://uvh02lohhb14dcmd9rb9buet1dr4b61j-a-gm-opensocial.googleusercontent.com
      include_granted_scopes =真
      HD = ***********。co.uk
      CLIENT_ID = .apps.googleusercontent.com
      hl = en

我认为那里没有什么有用的东西,只是为了完整地展示我尝试过的东西。

关于这一点的任何想法 - 是/应该/将会是 - 可能的,如果没有任何其他方法的建议?

0 个答案:

没有答案