Google api Google操作-使用访问令牌访问日历API失败

Google api Google操作-使用访问令牌访问日历API失败,google-api,google-calendar-api,google-oauth,actions-on-google,Google Api,Google Calendar Api,Google Oauth,Actions On Google,我按照说明,在我的应用程序的服务器和谷歌操作之间设置帐户链接 在身份验证过程中,我请求了“”范围权限 我通过调用 app.getUser().accessToken 但当我向googleapi calendar发出请求时,使用以下代码: const google = require('googleapis'); var calendar = google.calendar('v3'); var eventData = { auth: myAuthToken, calendar

我按照说明,在我的应用程序的服务器和谷歌操作之间设置帐户链接

在身份验证过程中,我请求了“”范围权限

我通过调用

app.getUser().accessToken
但当我向googleapi calendar发出请求时,使用以下代码:

const google = require('googleapis');
var calendar = google.calendar('v3');

var eventData = {
    auth: myAuthToken,
    calendarId: 'primary',
    resource: {
        'summary': 'My Event',
        'description': 'Event desc',
        'start': {
            'dateTime': '2017-06-11',
        },
        'transparency': 'transparent',
        'visibility': 'private',
        'colorId': 'blue'
    }
};

calendar.events.insert(eventData, 
  function(err, event) {
    if (err) {
      console.log(err)
    }
});
我得到的是这个错误:

{ Error: Login Required
    at Request._callback (\node_modules\google-auth-library\lib\transporters.js:85:15)
    at Request.self.callback (\node_modules\request\request.js:188:22)
    at emitTwo (events.js:106:13)
    at Request.emit (events.js:191:7)
    at Request.<anonymous> (\node_modules\request\request.js:1171:10)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:188:7)
    at IncomingMessage.<anonymous> (\node_modules\request\request.js:1091:12)
    at IncomingMessage.g (events.js:291:16)
    at emitNone (events.js:91:20)
  code: 401,
  errors:
   [ { domain: 'global',
       reason: 'required',
       message: 'Login Required',
       locationType: 'header',
       location: 'Authorization' } ] }
{错误:需要登录
应请求。\回调(\node\u modules\google auth library\lib\transporters.js:85:15)
at Request.self.callback(\node\u modules\Request\Request.js:188:22)
两点钟(events.js:106:13)
at Request.emit(events.js:191:7)
应请求。(\node\u modules\Request\Request.js:1171:10)
在emitOne(events.js:96:13)
at Request.emit(events.js:188:7)
输入消息时。(\node\u modules\request\request.js:1091:12)
在IncomingMessage.g(events.js:291:16)
在emitNone(events.js:91:20)
代码:401,
错误:
[{域:'全局',
原因:“必需”,
消息:“需要登录”,
locationType:“标头”,
位置:'授权'}]}

是否有其他身份验证步骤需要遵循?

我认为问题在于,您使用的
auth
参数的结构不正确。您正在向它传递一个字符串标记,而它应该是一个OAuth2对象。有关详细信息,请参见,但简而言之,您需要:

  • 创建OAuth2对象
  • 设置凭据(访问令牌)
  • 在事件数据/调用的
    auth
    参数中使用此
    oauth2Client
    对象

  • 也许和这个问题有关?可访问特定用户数据的公共可用应用程序必须通过审查。如果您看到应用程序的访问错误,请使用我们的OAuth开发者验证表单提交请求……OAuth信息是否与我在API.AI帐户中输入的信息相同?还是来自不同的地方@PrisonerYes,这些值应与设置OAuth信息时指定的值相同。
    
    var OAuth2 = google.auth.OAuth2;
    var oauth2Client = new OAuth2(
      YOUR_CLIENT_ID,
      YOUR_CLIENT_SECRET,
      YOUR_REDIRECT_URL
    );
    
    
    oauth2Client.setCredentials({
      access_token: 'ACCESS TOKEN HERE'
    });
    
    
    var eventData = {
        auth: oauth2Client,
        ...
    };