我正在尝试使用我的node.js服务器访问Google身份验证API,但我无法找到。基本上,我希望用户到达我的登录页面,单击身份验证按钮,然后服务器将他重定向到Google API,用户允许我的应用访问他的数据,然后Google API将用户重定向到我的网站授权令牌。
我已经设置了oauth2所需的网址,它似乎有效(如果我将其粘贴到我的网络浏览器中,它会在Google授权页面上重定向我)。我看到this post似乎回答了我的问题,但我不知道如何处理快速代码部分。
以下是我正在使用的代码:
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);
});
});
但是这个方法在我的客户端页面上返回一个错误(由我的ajax请求的错误字段引发)。如果我在没有“位置”信息的情况下将HTTP代码更改为200,它会在客户端上显示“暂时移动”页面,其中包含一个按钮,可将我重定向到Google API授权页面。
有什么建议吗?
答案 0 :(得分:9)
我建议将现有模块用于该任务。 everyauth是一个模块,不仅允许oauth2访问Google,还允许访问提供它的大多数其他平台。我在我的项目中使用它来进行Twitter访问。它也有express
整合。
您可以在The Node Toolbox寻找更多替代方案。想到护照。
答案 1 :(得分:9)
正如Burcu Dogan所述,Google发布了一个用于访问Google API的官方客户端库。可在此处找到:https://github.com/google/google-api-nodejs-client/
答案 2 :(得分:8)
我使用Passport获得了良好的结果(与MS身份验证方案无关!)。我最初尝试过everyauth,但IMO护照更符合expressjs惯例。
有一个Google身份验证提供程序可供使用:http://passportjs.org/guide/google/
答案 3 :(得分:3)
您可以在此处查看我的Node.JS + Google日历项目: https://github.com/berryboy/google-calendar
我也有一些使用谷歌oauth的例子。