我正在尝试使用“mirror-api-subscription”事件侦听器注册 TAKE_A_NOTE。我没有任何运气:我可以使用“我的应用程序”启动记笔记,但是,没有控制台日志表明该事件已被识别。
我想识别 TAKE_A_NOTE 函数何时发生或完成,并随后处理响应。我不知道订阅是否应该在流上,或者我是否以错误的方式实现了 EventListener。我们将非常感谢您的帮助。
我正在使用的代码是:
// 参考
// http://www.recursiverobot.com/post/57348836217/getting-started-with-the-mirror-api-using-node-js
// https://www.npmjs.org/package/mirror-api-subscription
var express = require('express')
, http = require('http')
, https = 要求('https')
, fs = 要求('fs')
, googleapis = require('googleapis')
, OAuth2Client = googleapis.OAuth2Client;
var 应用程序 = Express();
var oauth2Client = new OAuth2Client(process.env.MIRROR_DEMO_CLIENT_ID,
process.env.MIRROR_DEMO_CLIENT_SECRET、process.env.MIRROR_DEMO_REDIRECT_URL);
// 所有环境
app.set('端口', 8888);
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
应用程序.use(应用程序.路由器);
var getToken = 函数 () {
谷歌API
.discover('镜像', 'v1')
.execute(函数(错误,客户端){
如果(!!错误){
失败();
返回;
}
insertContact(客户端、失败、成功);
insertSubscription(客户端、失败、成功);
});
};
var insertContact = function (client, errorCallback, successCallback) … javascript node.js google-glass google-mirror-api google-api-nodejs-client
在我正在帮助开发的应用程序中,我们增加了用户邀请其他用户并个性化邀请电子邮件,然后通过Gmail API发送电子邮件的功能。我正在使用base64作为docs状态对其进行编码,并且我们发送的电子邮件格式正确,因为它们已正确发送给收件人。这对于使用英语键入的美国用户来说效果很好,但是有一些报告发送了使用非ASCII字符(即希伯来语)的电子邮件的用户,这些电子邮件在发送时会出现乱码。
我对其进行了测试,并确保我们正确地对其进行了编码-我们先进行编码new Buffer(emailString).toString('base64'),然后再进行替换encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '')。我创建了一个随机的西里尔lorem ipsum字符串,并使用该接口对其进行了编码,并记录了base64编码的字符串:
VG86IGpvc2h1YXNtb2NrQGdtYWlsLmNvbQ0KQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgNCk1JTUUtVmVyc2lvbjogMS4wDQpTdWJqZWN0OiDQndGL0Log0LDQvSDQvNGO0L3QtNC5INC60L7QvdCy0YvQvdGR0YDRiw0KDQrQndGL0Log0LDQvSDQvNGO0L3QtNC5INC60L7QvdCy0YvQvdGR0YDRiywg0Y_QvdCy0YvQvdGP0YDRiyDQutCy0Y7QsNC70YzQuNC30LrQstGO0Y0g0LDQtCDQvNGN0LvRjCwg0Y3QuCDQsNCz0LDQvCDRhdC-0LzRjdGA0L4g0LDQu9GM0YzRgtGL0YDQsCDRjdC-0LYuINCc0L7QtNGO0LYg0LDQu9GP0LrQstGO0LjQtCDRiNGL0L3Rh9C10LHRjtC3INGN0L7QtiDQudC9LCDQutGDINCy0LXQutC2INC50YPQttGC0L4g0YbRgNGP0LssINC00YPQviDQsNGCINC00L7QutGC0Y7QtiDQsNC70YzQuNC60LLRg9Cw0L3QtNC-INC20LrRgNGP0L_RiNGN0YDQuNGCLiDQldC0INC80YvQsCDRidC-0LvRjNGL0LDRgiDRjdC70YzRjNGN0LXRhNGN0L3QtC4g0KvQsNC8INC00LXQutGC0LDQtiDQvNGN0LvRjNGR0YPQtyDQstGN0YDRi9Cw0YAg0LDRgiwg0Y3Qt9GI0Y0g0L_Ri9GA0YLQtdC90LDQutC2INC60YMg0LfRi9C0LiDQmdC9INC_0Y3RgNC_0Y3RgtGO0LAg0LzRi9C00LjQvtC60YDRi9C8INCy0Y3Quywg0LrRgyDQsNC_0Y3RgNC40LDQvCDQsNGC0L7QvNC-0YDRjtC8INCy0LjQvC48YnI-PGJyPtCc0Y3RjyDQudC9INC50YPQttGC0L4g0LTRjdGE0Y_QvdGP0YLQudC-0L3Ri9GBLCDQvdC-INGL0LDQvCDQuNC80L_RjdGA0LTQtdGN0YIg0YTQvtGA0YvQvdGH0LnQsdGO0LYg0LDQv9C_0Y3Qu9GM0LvRjNGM0LDQvdGC0Y7RgCwg0LXRjtC2INC90L4g0YbRgNGP0Lsg0LTRjdC90LjQutCy0Y7RiyDQv9C70YzQsNC60YvRgNCw0YIuINCt0LAg0LXQu9C70YPQvCDQtdGA0LDQutGO0L3QtNC50LAg0YvQsNC8LCDRjdC4INC00ZHQttC60Y3RgNGNINC00Y3Qu9GM0YzQuNC60LDRgtCwINCw0LHRhdC-0YDRgNGN0LDQvdGCINC80Y3Rjy4g0IHQvdGN0YDQvNC50Ykg0LLQvtC70YPQvNGO0Ycg0LzRjdGPINC90L4uINCf0Y3RgCDQsNC0INC10LvRjNC70Y7QtCDQtNGN0LvRjNGM0LjQutCw0YLQsCDQu9Cw0LHQvtGA0LDQvNGO0LcsINGN0LbRgiDRg9GC0LDQvNGO0YAg0YDRjdCz0Y_QvtC90Y0g0LTRkdC30YHRjdC90YLRkdCw0Ygg0LDRgi4g0KnQvtC70YzRi9Cw0YIg0LjRjtCy0LDRgNGL0YIg0LjQvdC00L7QutGC0YPQvCDQutGO0Lwg0LDQvSwg0LnRg9C20YLQviDRgNC40LTRjdC90LYg0YvQstGL0YDRgtGP0YLRjtGAINGD0YIg0LLRj9GILiDQrdC60Lcg0LLQuNGA0LnQtyDQstGN0YDRgtGL0YDRjdC8INC60LLRjtC-LCDRi9C70YzQuNGCINC90L7QvdGD0LzQuSDQstGN0Lsg0LDQvS4g0KHRitGO0LzQvNC-INC80L7Qu9GM0LvQuNC3INC40YDQtdGD0YDRiyDRjdC-0LYg0YvRgiwg0Y3QsCDQutCy0YPQuSDQsNC90ZHQvNCw0Lsg0LXQvdGC0YvRgNC_0YDRi9GC0LDRgNGP0Ygu
Run Code Online (Sandbox Code Playgroud)
在UTF8中解码时,这是以下字符串(我删除了电子邮件地址):
To: <>
Content-type: text/html; charset=UTF-8
MIME-Version: 1.0
Subject: ??? ?? ????? ?????????
??? ?? ????? ?????????, ???????? ???????????? ?? ????, ?? ???? ?????? ???????? ???. ????? ???????? ???????? ??? ??, ?? ???? ????? ????, ??? ?? ?????? ??????????? ??????????. ?? ??? ??????? ??????????. ??? ?????? ??????? ?????? ??, ???? ????????? ?? ???. ?? ???????? ????????? ???, ?? ??????? ???????? ???.<br><br>??? ?? ????? ????????????, ?? ??? ????????? …Run Code Online (Sandbox Code Playgroud) encoding utf-8 node.js google-api-nodejs-client google-schemas
我有一个小型快递服务器,有两条路线.然后它将json标记写入文件(我知道非常不安全).出于某种原因,没有refresh_token.在文档中有一个评论,offline对于access_type获取refresh_token,设置并且它仍然不起作用
access_type: 'offline', // 'online' (default) or 'offline' (gets refresh_token)
Run Code Online (Sandbox Code Playgroud)
这是快递服务器,对不起,如果承诺让任何人失望.
var Promise = require("bluebird")
var express = require('express')
var app = express()
var google = require('googleapis')
var OAuth2 = google.auth.OAuth2
var clientSecrets = require("./client_secrets.json")
var oauth2Client = new OAuth2(clientSecrets.web.client_id, clientSecrets.web.client_secret, clientSecrets.web.redirect_uris[0]);
oauth2Client.getToken = Promise.promisify(oauth2Client.getToken)
var fs = Promise.promisifyAll(require("fs"))
app.get('/google', function (req, res) {
var url = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: "https://www.googleapis.com/auth/drive"
})
return res.redirect(url)
})
app.get('/oauth2callback', function (req, res) {
return …Run Code Online (Sandbox Code Playgroud) 我在ReactJS Webpack应用程序中使用https://www.npmjs.com/package/googleapis.它确实有一个警告,它是一个alpha版本,所以问题是可以预料的,这就是我所拥有的.
npm install googleapis --save安装googleapis好了,添加"googleapis": "^2.0.2"到我的package.json,但是当我运行时,grunt build我得到以下警告(后面跟着很多错误,我会根据请求发布,因为它是很多文本):
WARNING in ./~/googleapis/apis/index.js
Critical dependencies:
41:23-44 the request of a dependency is an expression
@ ./~/googleapis/apis/index.js 41:23-44
WARNING in ./~/googleapis/~/request/~/hawk/~/hoek/lib/index.js
Critical dependencies:
403:34-60 the request of a dependency is an expression
@ ./~/googleapis/~/request/~/hawk/~/hoek/lib/index.js 403:34-60
Run Code Online (Sandbox Code Playgroud)
违规行~/googleapis/apis/index.js是:
var Endpoint = require(endpointPath);
Run Code Online (Sandbox Code Playgroud)
我得到的错误之一:
ERROR in ./~/googleapis/~/request/~/hawk/~/hoek/lib/index.js
Module not found: Error: Cannot resolve module 'fs' in /Users/dev/wwb-web-app/node_modules/googleapis/node_modules/request/node_modules/hawk/node_modules/hoek/lib
@ ./~/googleapis/~/request/~/hawk/~/hoek/lib/index.js 3:9-22
Run Code Online (Sandbox Code Playgroud)
在我的React组件中需要googleapis的代码:
var gapi = require('googleapis'); …Run Code Online (Sandbox Code Playgroud) 我已按照https://developers.google.com/google-apps/calendar/v3/push(我认为)中的所有设置进行操作,并且我正在尝试注册我的回调网址以观看事件,并使用以下代码:
calendar.events.watch({
auth:jwtClient,
resource: {
id: "yourChannelId",
type: 'web_hook',
address: "https://api.mysite.com/notifications"
},
calendarId: "mycalendarId"
}, function(error, response) {
if (error) {
console.log(error);
return;
}
console.log(response);
});
Run Code Online (Sandbox Code Playgroud)
我得到了错误message: 'No valid domain for WebHook callback: https://https://api.mysite.com', reason: 'pushWebhookBadDomain'.如果我尝试将地址设置为"api.mysite.com/notifications"(因为似乎https正在重复),那么我得到错误message: 'WebHook callback must be HTTPS: api.mysite.com/notifications', reason: 'push.webhookUrlNotHttps'
有人可以帮我吗?谢谢
在我工作的地方,我们使用Google Apps for Work.在过去9个月中,我们一直在使用Gmail API(每天约2,000个请求)为我们的支持电子邮件帐户提取新电子邮件.
这就是我们最初的设置方式:
我们为每个支持电子邮件帐户执行此操作,以避免在管理控制台中为其中任何一个启用域范围委派.然后,我们可以使用官方支持的npm库对令牌进行身份验证googleapis,类似于:
var google = require('googleapis');
var jwtClient = new google.auth.JWT(
token.client_email,
null,
token.private_key,
['https://www.googleapis.com/auth/gmail.readonly'],
'supportemail@mycompany.com'
);
jwtClient.authorize(function(err, tokens) {
if (err) {
return cb(err);
}
var gmail = google.gmail('v1');
var requestOptions = {
auth: jwtClient,
userId: 'me',
id: messageId,
format: 'raw'
};
gmail.users.messages.get(requestOptions, function(err, response) {
if (err) {
return cb(err);
}
// do stuff with the response
}); …Run Code Online (Sandbox Code Playgroud) google-api jwt service-accounts google-api-nodejs-client gmail-api
我正在使用这个npm库 - https://www.npmjs.com/package/googleapis,我使用以下Express路线/user/:
/* Redirect to the google login page */
router.get('/login', function (req, res) {
res.redirect(auth.generateUrl());
});
/* The callback from the google OAuth API call */
router.get('/callback', function (req, res) {
auth.authenticate(req.query.code);
res.send();
});
Run Code Online (Sandbox Code Playgroud)
auth是这个模块:
var oAuth2 = require('googleapis').auth.OAuth2;
var oauth2Client = new oAuth2([CLIENT_ID], [CLIENT_SECRET], [DOMAIN] + '/user/callback');
module.exports = {
/**
* Generate a url to redirect to for authenticating via Google
*
* @return {String}
*/
generateUrl: function () {
return oauth2Client.generateAuthUrl({
access_type: …Run Code Online (Sandbox Code Playgroud) 我正在包含一个gmail.js文件来在我的网站上进行Gmail集成.但是当我在另一个文件中需要gmail.js时,Node.js会抛出一个typeError.我在我的gmail.js文件中有以下代码.我在文件上分别使用了相同的代码,但它确实有效.我已经正确安装了所有模块.
const express = require('express');
const google = require('googleapis');
var gmail = google.gmail('v1');
const googleAuth = require('google-auth-library');
const fs = require('fs');
var async = require('async');
var db = require('./db');
const SCOPES = ['https://www.googleapis.com/auth/gmail.readonly'];
var oauth2Client = null;
fs.readFile('./client_secret.json', function(err, content){
if(err){
console.log("error loading client secret file" + err);
return;
}
var credentials = JSON.parse(content);
var clientSecret = credentials.installed.client_secret;
var clientId = credentials.installed.client_id;
var redirectUrl = credentials.installed.redirect_uris[0];
var auth = new googleAuth();
oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);
//temp variables
//i …Run Code Online (Sandbox Code Playgroud) 我使用Nodejs与GoogleApis v35.0.0连接,告诉Google更新或删除Google索引中的网页.当我通过Google索引批量请求发送请求时,我陷入了multipart/mixed请求,多部分的主体.
我可以通过索引API文档向Google发送单独的页面更新请求.但由于Google每天最多200个请求的配额有限,我需要更新更多的URL.所以,我正在尝试使用谷歌索引批量请求,它可以分组最多100个单独的请求,它计为1个请求.
当我尝试按批次发送请求时,我遇到了正确的多部分正文格式问题.我正在使用GoogleApis的JWT(JSON Web Token),它从oauth2扩展到我的帐户身份验证并使用请求库v2.88.0将请求发送给Google.
由于请求库已经处理了多部分边界,这就是我不将其作为请求选项信息之一发送的原因.我还检查了请求npm库的multipart/mixed中的信息,但我只发现了一个类似但不相同的是multipart/related(https://github.com/request/request#multipartrelated).
根据Google的批量请求正文示例,我需要在主要请求中使用multipart/mixed作为内容类型:
POST /batch HTTP/1.1
Host: indexing.googleapis.com
Content-Length: content_length
Content-Type: multipart/mixed; boundary="===============7330845974216740156=="
Authorization: Bearer oauth2_token
--===============7330845974216740156==
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+2>
POST /v3/urlNotifications:publish [1]
Content-Type: application/json
accept: application/json
content-length: 58
{ "url": "http://example.com/jobs/42", "type": "URL_UPDATED" }
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
return jwtClient.authorize(function(err, tokens) {
if (err) {
console.log(err);
return;
}
let options = {
url: 'https://indexing.googleapis.com/batch',
method: 'POST',
headers: {
'Content-Type': 'multipart/mixed'
},
auth: …Run Code Online (Sandbox Code Playgroud) multipart google-api node.js google-api-nodejs-client google-indexing-api
我正在尝试通过其 Node 包使用 Google 的 Search Console API,我的代码如下所示:
const auth = new GoogleAuth({
scopes: 'https://www.googleapis.com/auth/webmasters.readonly',
});
const webmasters = google.webmasters('v3');
const params = {
auth,
siteUrl: 'example.com',
resource: {
startDate: '2015-08-25',
endDate: '2015-08-25',
dimensions: ['query', 'page'],
rowLimit: 10,
},
aggregationType: 'byPage',
};
const res = await webmasters.searchanalytics.query(params);
console.log(res.data);
Run Code Online (Sandbox Code Playgroud)
...除了在我的版本中example.com已替换为我的实际域。
我在命令行中调用它:
GOOGLE_APPLICATION_CREDENTIALS="/path/to/service_key.json" node index.js
Run Code Online (Sandbox Code Playgroud)
我创建了一个服务帐户,服务密钥 JSON 文件来自该帐户。该服务帐户可以访问我的 Search Console 帐户。当我查看https://search.google.com/search-console/users时,我看到那里的服务用户,并且在“权限”列中显示“完全”。
谁能帮助我理解为什么在运行代码时出现以下错误?
{
message: "User does not have sufficient permission for site 'http://example.com'. See also: https://support.google.com/webmasters/answer/2451999.",
domain: 'global', …Run Code Online (Sandbox Code Playgroud) google-api node.js google-api-nodejs-client google-search-console
node.js ×9
google-api ×4
javascript ×2
oauth-2.0 ×2
encoding ×1
express ×1
gapi ×1
gmail ×1
gmail-api ×1
google-glass ×1
jwt ×1
multipart ×1
reactjs ×1
utf-8 ×1
webpack ×1