Articles of google oauth

使用从客户端接收到的谷歌授权代码在服务器端获取访问令牌javascript(nodejs)

我已经通过这个文档: – https://developers.google.com/identity/sign-in/web/server-side-flow 在最后一步它会收到授权码,然后显示使用java或python库接收访问令牌和刷新令牌的例子,但是我无法在nodejs中find任何类似的例子。 我怎样才能复制使用nodejs相同的例子? 我不能只发送一个post或获得一些谷歌oauth api的请求,并使用授权码接收访问令牌? 提前致谢 :)

passport-google-oauth无法注销用户

我使用passport-google-oauth模块对使用Express.js构build的Web应用程序上的用户进行身份validation。 注销事件是这样处理的: app.get('/logout', function(req, res) { console.log("logged out!"); req.logout(); res.redirect('/'); }); 虽然这确实将用户redirect到login页面(at / ),但我不确定是否真的将他注销。 点击注销后,当我在新选项卡中打开Gmail时,我仍然在那里login(并且没有,我以前没有login过Gmail )。 我怎样才能解决这个问题? 另外, req.logout()做什么来logging用户?

Passport.js:UID是唯一的吗?

我有一个Nodejs应用程序,我使用Passeport让我的用户通过Oauth连接Facebook或Google。 我连接后存储基本数据,如:uid,名字等 我怎么能保证,我收到的用户名将永远是唯一的给定的用户? 我的意思是,数据来自Facebook或Google,所以为什么我不能面对不同用户的讨厌的重复uid?

Google API服务帐户和nodejs

我希望能够使用nodejs以编程方式更新Youtube播放列表。 从理论上讲,使用Google API和jsonc是可能的。 因为我想在没有用户交互的情况下做到这一点,所以我一直在使用nodejs服务器上的Google API 服务帐号进行对抗。 注意本页没有列出用于Javascript的API客户端库 。 然后,我在Google文档中偶然发现了有关在Google Drive中使用服务帐户的消息: 出于安全原因,客户端JavaScript不支持服务帐户。 服务器端JavaScript的服务帐户尚不支持。 这是说我想达到什么是不可能的? 我无法在NodeJS服务器上使用服务帐户在没有用户交互的情况下更改播放列表?

Google Mapsengine对服务帐户的响应不足

我正尝试在地图引擎中为Google地图创build表格。 我已经将服务帐户添加到mapsenginepipe理面板中的访问列表中,并为其提供了“可编辑”权限。 我也给了它在项目的开发者控制台中的编辑权限。 这是我发送正在发回令牌的访问令牌的地方: var googleapis = require('googleapis'); function connect() { var authClient = new googleapis.auth.JWT( '216755859529-1s2o9qofhd9ea65ang9clpd1936ldfcr@developer.gserviceaccount.com', '../bin/googleoauth2.pem', 'notasecret', ['https://www.googleapis.com/auth/mapsengine'], // User to impersonate (leave empty if no impersonation needed) '' ); authClient.authorize(function(err, tokens) { if (err) { console.log(err); return; } else { console.log(tokens); } googleapis.discover('mapsengine', 'v1').execute(function (err, client) { if (err) { console.log('Problem during […]

客户端(angular度2)authentication,谷歌作为服务器(node.js)

在这里,我一直在寻找答案。 我有一个REST端点的nodejs服务器。 每个端点都有isLoggedIn中间件,所以我可以通过电子邮件对用户进行身份validation。 客户端在端口4200上运行,服务器在端口3113上运行。 我想基本上是让我的客户redirect到Google的同意屏幕,如果没有通过身份validation。 由于端口是不同的,我得到: XMLHttpRequest cannot load https://accounts.google.com/o/oauth2/v2/auth?response_type=code&redirect_ur…d=604408607019-ha937stehe6s3nk7ea892rviihrq5n4s.apps.googleusercontent.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. 现在,我还没有尝试过什么… 🙂 我尝试使用CLI代理function(这是一个webpackconfiguration),并将所有/api请求转发到服务器。 我已经添加头到服务器,但后来我意识到,这是谁发送这个错误,而不是我的服务器。 我在这里看到很多相关的post。 到目前为止,我所见过的最好的解决scheme是放置一个loginbutton,并将呼叫置于href ,因为我不能在域之间进行Ajax调用。 这真的是最好的解决scheme吗? 在服务器上运行身份validation代码时,是不是有其他方法可以从客户端进行身份validation? 我甚至将所有相关端口添加到了API开发者,并将callback调用添加到Google开发者控制台。 顺便说一句,当一个客户端从同一个端口服务时,所有的工作都很好。 谢谢。

NodeMailer – 使用Google服务帐户发送邮件失败,因为“用户名和密码不被接受”

我正在创build一个Twitter机器人,并且正在执行一个方法,如果发生错误,会向我发送电子邮件。 由于我已经在使用Google API访问Google云端硬盘(这里没有问题),所以我决定使用服务帐户发送电子邮件(Google控制台表示可以这样使用) 我到目前为止发送电子邮件的方法是: var config = require('./config/mail'); var google = require('./config/google'); var nodemailer = require('nodemailer'); var send = function (args) { let transporter = nodemailer.createTransport({ 'service': 'gmail', 'auth': { 'type': 'OAuth2', 'user': google.client_email, 'serviceClient': google.client_id, 'privateKey': google.private_key } }); transporter.on('token', token => console.log(token)); let message = { 'from': `"${config.serverFromName}" <${config.serverFromMail}>`, 'to': args.to, 'subject': args.subject, […]

使用NodeJS在Heroku上validationGoogle Sheet API

我正在按照以下示例访问Google表格API: https://developers.google.com/sheets/api/quickstart/nodejs 在示例代码中,以下方法可以获取新的oauth标记。 function getNewToken(oauth2Client, callback) { var authUrl = oauth2Client.generateAuthUrl({ access_type: 'offline', scope: SCOPES }); console.log('Authorize this app by visiting this url: ', authUrl); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question('Enter the code from that page here: ', function(code) { rl.close(); oauth2Client.getToken(code, function(err, token) { if (err) { console.log('Error while trying […]

如何从passportjs中的刷新令牌获取新的Google oauth访问令牌

似乎有关于如何从刷新令牌获取访问令牌的一些冲突的build议: 这回答说,passportjs不涉及刷新访问令牌,它应该通过cron作业完成: 刷新Passport.js中的令牌 这回答说:“不需要任何cron作业…当用户使用已过期的访问令牌从API请求数据,这应该会导致您的框架失败,更新,然后重试。 OAuth 2.0 – 访问令牌何时应该刷新令牌? 确保我们始终向Google提供有效的访问令牌的最简单方法是什么? 现在,我们只是将刷新令牌存储在数据库中,从不使用它,每当访问令牌过期时,都会强制用户通过“允许/拒绝权限”stream。

使用passport-google-oauth2与Facebook和Google进行身份validation

我正在尝试使用passport-google-oauth2和passport-facebook分别passport-facebook和Google进行身份validation。 我的auth文件夹的项目结构如下所示: auth/facebook index.js login.js verifyCallback.js auth/google index.js login.js verifyCallback.js auth / google代码如下所示: verifyCallback.js var User = require('../../models/user'); module.exports = function(accessToken,refreshToken,profile,done){ function findOrCreateUser(){ console.log(profile); User.findOne({'google.id':profile._json.id},function(err,user){ if(err){ console.log("An error occured when logging in with google"); console.error(err); done(err); } else if(user) { console.log("User exists in google verify callback"); console.log(user); done(null,user); } else{ console.log("Creating a new user in […]