使用nodejs进行Google身份验证

时间:2012-04-11 03:19:05

标签: node.js oauth google-api redirect

我正在尝试使用我的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授权页面。

有什么建议吗?

4 个答案:

答案 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的例子。

相关问题