用于REST的elgg api auth和用户身份验证标头?

时间:2014-07-30 10:07:48

标签: rest authentication header elgg

嗨,我是elgg REST API的新手。

我想登录并添加post to wire,因为我有method = wire.save_post 我从Google那里了解到api auth和用户身份验证必须在请求标题中给出如何?

我正在做一个用于添加帖子的ajax:

$("#post_text").submit(function() {

$.ajax({
type:"POST",
url:"http://elgg.amusedcloud.com/services/api/rest/json/?",
data:{ method:'wire.save_post', text : text_val, access : 'public', wireMethod : 'site', username : uname },
dataType:"json",
success: function(data) {

}
});

});

1 个答案:

答案 0 :(得分:0)

通常,你所指的elgg webservice的ajax调用看起来应该是这样的。请注意,api_key和auth_token是请求URL的一部分。

$("#post_text").submit(function() {
  $.ajax({
    type:"POST",
    url:"http://elgg.amusedcloud.com/services/api/rest/json/?method=wire.save_post&api_key=1140321cb56c71710c38feefdf72bc462938f59f&auth_token=df123dfgg455666",
    data:{
      text : text_val, 
      access : 'public', 
      wireMethod : 'site', 
      username : uname
    },
    dataType:"json",
    success: function(data) {
    }
  });
});

你没有提到这个,但是,当你说

  

...我从Google那里了解到api auth和用户身份验证必须在请求标题中提供

这是在使用OAuth作为身份验证机制的上下文中吗?在这种情况下,您必须使用HTTP标头Authorization来发送散列和签名。上面的调用将是这样的。

$("#post_text").submit(function() {
  $.ajax({
    type:"POST",
    url:"http://elgg.amusedcloud.com/services/api/rest/json/?method=wire.save_post&auth_token=df123dfgg455666",
    data:{
      text : text_val, 
      access : 'public', 
      wireMethod : 'site', 
      username : uname
    },
    beforeSend: function(xhr){
      xhr.setRequestHeader('X-Test-Header', 'test-value');
    },
    dataType:"json",
    success: function(data) {
    }
  });
});

请注意url中的更改以及beforeSend属性添加到ajax对象。

参考文献:

http://docs.elgg.org/wiki/OAuth

http://api.jquery.com/jQuery.ajax/