2011-12-16 28 views
6

Tôi đang phát triển một trang web sử dụng Drupal bên ngoài cho các bài viết và trang. Mục đích là hiển thị các bài viết trong một trang web chỉ bằng html/css/js.Đăng nhập Drupal qua Máy chủ còn lại

Tôi đã thêm mô-đun Rest Server vào back-end của drupal để tôi có thể thực hiện các yêu cầu http để truy xuất lại các bài viết. Bây giờ truy xuất lại các bài báo từ các công trình phía sau drupal (xem mã bên dưới). Restdrupal là tên của trang web của tôi và restendpoint là tên của thiết bị đầu cuối máy chủ của giải trí (Captian hiển nhiên)

$.ajax({ 
    url : "http://127.0.0.1/restdrupal/restendpoint/node.json", 
    dataType : 'json', 
    success : function(data) { 
       //further code 
    } 
}); 

Bây giờ tôi muốn khách hàng của tôi để có thể thêm một số bài viết, vì vậy tôi cần phải đăng nhập đầu tiên. Tôi đã tìm kiếm trên Internet trong nhiều ngày và đã thử hàng triệu thứ nhưng không có gì hiệu quả đối với tôi. Điều mới nhất tôi đã cố gắng (với jQuery) là thế này:

$.ajax({ 
    url : "http://127.0.0.1/restdrupal/restendpoint/user/login", 
    dataType:'application/json', 
    type : 'PUT', 
    data : 'Name=myusername&Pass=mypassword', 
    success : function(data) { 
     //further code 
    }, 
    error:function(data){ 
      //Error handling 
    } 
}); 

Tôi cũng đã thay đổi PUT thành POST ...

Câu trả lời tôi nhận được là (không mather những gì tôi làm) giống nhau:

406 Not Acceptable: Unsupported request content type application/x-www-form-urlencoded 

Xin vui lòng ai đó giúp tôi? Trân trọng, Ceetn

+0

là bất cứ ai có thể làm rõ - là drupal này 6 hoặc 7, và nó là dịch vụ 2 hay 3? ta! – ErichBSchulz

+1

Drupal 7 và các dịch vụ 3. – Ceetn

Trả lời

24

Bạn phải bật loại nội dung ứng dụng/x-www-form-urlencoded của điểm cuối dịch vụ của bạn.

Đỗ như sau: Dịch vụ -> Chỉnh sửa Tài nguyên -> chọn tab "Server" -> kích hoạt "application/x-www-form-urlencoded" và đó là nó

+0

Đây thực sự là vấn đề! – Ceetn

+0

Đây cũng là vấn đề của tôi, cảm ơn bạn đã đăng bài! Đây là lần đầu tiên tôi thiết lập dịch vụ và tôi đã bỏ qua hoàn toàn cài đặt đó. – RevNoah

+0

Cách cho phép xác thực từ URL khác nhau? Nếu dịch vụ của tôi là trên A.com và tôi muốn đăng nhập từ B.com thì có thể và Làm thế nào? Tôi đã thử bằng cách sử dụng 'crossDomain: TRUE' trong $ .ajax và' JSONP' nhưng cho tôi thông báo 'truy cập bị từ chối cho người dùng nặc danh' –

2

Tìm ra giải pháp cho bản thân. Đối với những người quan tâm:

$.ajax({ 
    url : "http://127.0.0.1/restdrupal/restpoint/user/login.json", 
    type : 'post', 
    data : 'username=' + encodeURIComponent(username) + '&password=' + encodeURIComponent(password), 
    dataType : 'json', 
    error : function(data) { 
      //error code 
    }, 
    success : function(data) { 
     //success code 
    } 
}); 
+1

Mã trên hoạt động tốt khi tôi chuyển tên người dùng và mật khẩu tới url của người dùng/login.json. Câu hỏi của tôi là, khi chúng ta sử dụng jQuery instread của PHP/CURL nó sẽ tự động thêm giá trị cookie vào trình duyệt? Trong trường hợp của tôi, mã trên đang hoạt động tốt và đăng nhập tôi vào trang web thành công. Nhưng, khi tôi đang sử dụng cùng một bằng cách sử dụng PHP/CURL Yêu cầu nó sẽ cho tôi phản ứng thành công với ID và giá trị Sess nhưng tôi nghĩ rằng không được lưu trữ dưới dạng Cookie và không đăng nhập tôi vào trang web? Bất kỳ trợ giúp nào –

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