2011-12-16 11 views
6

Makaleler ve sayfalar için harici bir Drupal kullanan bir web sitesi geliştiriyorum. Amaç, bir web sitesindeki makaleleri sadece html/css/js kullanarak göstermektir.Dinlenme sunucusu üzerinden Drupal giriş

Drupal arka tarafa bir Rest Server modülü ekledim, böylece makaleleri yeniden almak için http istekleri yapabilirim. Şimdi drupal back-end çalışmalarından makaleleri geri alma (aşağıdaki kod bakınız). Restdrupal sitemde adıdır ve restendpoint

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

Şimdi benim müşteri bazı makaleler eklemek mümkün istiyorum istirahat sunucunun bitiş noktasının adı (Apaçık Captian), bu yüzden ilk giriş yapmanız gerekecek. Günlerce interneti araştırıyorum ve milyonlarca şey denedim ama hiçbir şey benim için işe yaramadı. Ayrıca POST içine PUT değiştirdik
$.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 
    } 
}); 

...

i alıyorum yanıtı benim yaptığım (hayır mather çıkmaktadır: i (jQuery ile) denedim en son şey bu oldu Aynı:

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

Birisi bana yardım edebilir mi? Saygılarımızla, Ceetn

+0

açıklamak mümkün kimse - bu drupal 6 ya da 7, ve 2 ya da 3 hizmet mi? ta! – ErichBSchulz

+1

Drupal 7 ve hizmetler 3. – Ceetn

cevap

24

Servis bitiş noktası application/x-www-form-urlencoded içerik türünü etkinleştirmek zorunda.

Do şöyle: Hizmetler -> Düzen Kaynakları -> select sekme "Sunucu" -> "application/x-www-form-urlencoded" ve bu kadar etkinleştirmek

+0

Bu gerçekten sorun oldu! – Ceetn

+0

Bu benim de sorunumdu, gönderim için teşekkürler! Bu hizmeti ilk kurduğumda ve bu ayarı tamamen gözden kaçırdım. – RevNoah

+0

Farklı URL'den kimlik doğrulamaya nasıl izin verilir? Hizmetim A.com'da ise ve B.com'dan giriş yapmak istiyorum, bu nasıl ve nasıl? $ .ajax ve 'JSONP' içinde' crossDomain: TRUE 'kullanarak denedim ancak bana' anonim kullanıcı için erişim reddedildi 'mesajını verdim –

2

ilgilenenler için:

$.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

Kullanıcı adı/login.json url kullanıcı adı ve parola geçirirken kod üzerinde çalışıyor. Sorum şu: PHP/CURL jQuery instread'i kullandığımızda, tarayıcıya otomatik olarak çerez değeri ekliyor mu? Benim durumumda yukarıdaki kod gayet iyi çalışıyor ve siteye başarıyla giriş yapıyor. Ancak, PHP/CURL İsteği kullanarak aynı şeyi kullandığımda, Oturum Kimliği ve Değer ile başarı yanıtı vereceğim ancak Çerez olarak saklanmadım ve siteye giriş yapmadın mı? Herhangi bir Yardım –