2012-04-11 30 views
21

Tôi đang cố gắng truy cập API xác thực của Google với máy chủ node.js của mình nhưng tôi không thể tìm thấy cách thực hiện. Về cơ bản, tôi muốn người dùng đến trang đăng nhập của tôi, nhấp vào nút xác thực, sau đó máy chủ chuyển hướng anh ấy đến API Google, người dùng cho phép ứng dụng của tôi truy cập dữ liệu của anh ấy và sau đó Google API chuyển hướng người dùng đến trang web của tôi mã thông báo ủy quyền.Xác thực của Google với các nút bấm

Tôi đã thiết lập url được yêu cầu bởi oauth2 và có vẻ như nó hoạt động (nếu tôi dán nó vào trình duyệt web của mình, nó sẽ chuyển hướng tôi trên trang ủy quyền của google). Tôi thấy this post dường như trả lời câu hỏi của tôi nhưng tôi không biết cách xử lý phần mã chuyển phát nhanh.

Đây là mã Tôi đang sử dụng:

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);  
    }); 
}); 

Nhưng phương pháp này trả về một lỗi trên trang khách hàng của tôi (nuôi dưỡng bởi các lĩnh vực báo lỗi yêu cầu ajax của tôi). Nếu tôi thay đổi mã HTTP thành 200 mà không có thông tin "Vị trí", nó sẽ hiển thị trên máy khách một trang "Đã tạm thời di chuyển" có nút chuyển hướng tôi đến trang ủy quyền API của Google.

Bất kỳ đề xuất nào?

+3

Sử dụng https://github.com/google/google-api-nodejs-client. –

Trả lời

9

Tôi khuyên bạn nên sử dụng các mô-đun hiện có cho tác vụ đó. everyauth là một mô-đun cho phép không chỉ truy cập oauth2 vào Google mà còn cho hầu hết các nền tảng khác cung cấp cho nó. Tôi đang sử dụng này để truy cập twitter vào các dự án của tôi. Nó có tích hợp express.

Bạn có thể tìm thêm lựa chọn thay thế tại The Node Toolbox. Hộ chiếu đến với tâm trí.

3

Bạn có thể muốn kiểm Node.js + dự án Google Calendar của tôi ở đây: https://github.com/berryboy/google-calendar

Tôi cũng có một vài ví dụ về sử dụng google oauth.

+1

Vui lòng mở rộng câu trả lời của bạn với nhiều nội dung hơn từ bài viết được liên kết. – bytebuster

8

Tôi đã có kết quả tốt với Passport (không liên quan đến lược đồ xác thực MS!). Ban đầu tôi đã thử mọi thứ, nhưng hộ chiếu IMO phù hợp hơn với các quy ước của hội nghị.

Có một nhà cung cấp auth Google đã sẵn sàng để sử dụng: http://passportjs.org/guide/google/

+0

Lưu ý rằng mô-đun 'hộ chiếu-google' sử dụng OpenID, không còn được hỗ trợ bởi Google. Thay vào đó hãy sử dụng https://www.npmjs.com/package/passport-google-oauth2 – Luc

Các vấn đề liên quan