使用nodejs进行Google身份验证

Sim*_*mon 22 redirect oauth google-api node.js

我正在尝试使用我的node.js服务器访问Google身份验证API,但我无法找到.基本上,我希望用户到达我的登录页面,单击身份验证按钮,然后服务器将他重定向到Google API,用户允许我的应用访问他的数据,然后Google API将用户重定向到我的网站授权令牌.

我已经设置了oauth2所需的网址,它似乎有效(如果我将其粘贴到我的网络浏览器中,它会在Google授权页面上重定向我).我看到这篇文章似乎回答了我的问题,但我不知道如何处理快速代码部分.

这是我正在使用的代码:

https.get(options, function(res) {
    var retrieved_data = '';
    res.on('data', function(data) { retrieved_data += data; });
    res.on('end', function() { 
        // FIXME
        client_response.writeHead(302, {"Content-Type" : "text/plain", "Location" : res.headers.location});
        client_response.end(retrieved_data);    
    });
});
Run Code Online (Sandbox Code Playgroud)

但是这个方法在我的客户端页面上返回一个错误(由我的ajax请求的错误字段引发).如果我在没有"位置"信息的情况下将HTTP代码更改为200,它会在客户端上显示"暂时移动"页面,其中包含一个按钮,可将我重定向到Google API授权页面.

有什么建议吗?

arv*_*ahl 9

我建议使用现有的模块来完成该任务.everyauth是一个模块,不仅允许oauth2访问谷歌,而且允许大多数其他平台提供它.我在我的项目中使用它来进行Twitter访问.它也有express整合.

您可以在The Node Toolbox中查找更多选项.护照浮现在脑海中.


Sim*_*mon 9

正如Burcu Dogan所述,Google已经发布了一个用于访问Google API的官方客户端库.它可以在这里找到:https://github.com/google/google-api-nodejs-client/


UpT*_*eek 8

我在Passport上取得了不错的成绩(与MS身份验证方案无关!).我最初尝试过everyauth,但IMO护照更符合expressjs惯例.

有一个Google身份验证提供商可以使用:http://passportjs.org/guide/google/