22

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

我已经设置了 oauth2 所需的 url,它似乎可以工作(如果我将它粘贴到我的网络浏览器中,它会将我重定向到谷歌授权页面)。我看到这篇文章似乎回答了我的问题,但我不知道如何处理快速代码部分。

这是我正在使用的代码:

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

4 回答 4

9

我建议使用现有模块来完成该任务。everyauth是一个模块,它不仅允许 oauth2 访问 Google,还允许访问大多数其他提供它的平台。我在我的项目中使用它来访问 Twitter。它也有express集成。

您可以在The Node Toolbox中寻找更多替代方案。想到护照。

于 2012-04-12T12:50:28.310 回答
9

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

于 2014-01-03T14:18:57.740 回答
8

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

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

于 2013-02-01T10:37:20.827 回答
3

您可能想在这里查看我的 Node.JS + Google Calendar 项目: https ://github.com/berryboy/google-calendar

我还有一些使用 google oauth 的示例。

于 2012-11-23T05:25:53.533 回答