2012-02-27 29 views
6

Tôi có một trang web cho phép xác thực Facebook bằng cách sử dụng django-social-authdjango REST facebook authentication

Bây giờ tôi cũng cần phải xác thực bằng API không dựa trên cookie. Ý tưởng của tôi là bao gồm một "sessionid =" như một trường POST (nó sẽ sử dụng HTTPS). Cho đến nay tôi quản lý để "đánh lừa" django để truy cập sessionid này như thể nó là một cookie (tôi về cơ bản làm một cái gì đó như request.COOKIES ['sessionid'] = request.POST ['sessionid'] trong một middleware).

Vấn đề của tôi là cách đưa sessionid cho người dùng ngay sau khi được xác thực. Từ những gì tôi có thể tìm ra, facebook cung cấp cho người dùng một "mã thông báo truy cập", sau đó được gửi đến/complete/facebook /, được xử lý bởi django-social-auth và trả về tiêu đề "Set-cookie" chứa "sessionid " Chìa khóa. Nhưng thay vào đó, tôi cần nó để trả về khóa sessionid như một json trong nội dung trang (trình khách API không thể đọc tiêu đề phản hồi http).

Trả lời

1

Có vẻ như là một thách thức. Nhưng có lẽ bạn có thể sử dụng tín hiệu lưu trữ để kích hoạt một sự kiện Comet với JSON được yêu cầu. Như một điểm khởi đầu, một phiên bản cũ của tài liệu django-social-auth dường như đề cập đến các tín hiệu.

https://django-social-auth.readthedocs.org/en/v0.7.1/signals.html

Tuy nhiên một cách tiếp cận tốt hơn có thể được bỏ qua django-xã hội-auth tất cả lại với nhau và đi cho một auth xã hội python. Bản thân tài liệu nói: "LƯU Ý: THƯ VIỆN NÀY KHÔNG ĐƯỢC DÙNG TRONG YÊU THÍCH của python-social-auth".

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