Drupalサービスを使用および使用するtitanium mobile appを作成しています。ノードを作成することはできますが、ユーザーは常に匿名です。 Authenticationが基本になるようにリクエストヘッダーを設定してみました。
authstr = 'Basic ' +Titanium.Utils.base64encode('admin'+':'+'password');
xhr.setRequestHeader('Authorization', authstr);
xhr.setRequestHeader("Content-Type","application/json");
xhr.send(JSON.stringify(params));
いくつかの理由で、それでも私に与えられます。
コード= 3「認証が必要です」
これをトラブルシューティングする最良の方法は何ですか?この方法でセッションを使用することもできますか?
セッション認証は、基本認証とは異なります。
セッション認証では、POSTリクエストをENDPOINT/user/loginに送信することにより、ログインする必要があります。セッションヘッダー情報が返されます。今後使用するために保存し、すべてとともに送信する必要があります。リクエスト。
ご助力ありがとうございます。ようやく、RPCサーバーからファイルを認証して取得することができました。誰かがそれを必要とする場合に備えて、ここに私の構文があります。
// USER LOGIN
$authenticate = xmlrpc($settings['server'], Array('user.login' => array($settings['user'] , $settings['password']),));
// CREATE HEADERS
$options['headers']['Cookie'] = $authenticate['session_name'] . '=' . $authenticate['sessid'];
//RETRIEVE FILE
$file= xmlrpc($settings['server'], Array('file.retrieve' => Array(Array("fid"=>$fid),Array("file_contents"=> 'true'),Array("image_styles"=>'true') )),$options);
編集:SERVICES 3.5の後に行うべきこと:
// USER LOGIN
$authenticate = xmlrpc($settings['server'], Array('user.login' => array($settings['user'] , $settings['password']),));
// CREATE HEADERS
$options['headers']['Cookie'] = $authenticate['session_name'] . '=' . $authenticate['sessid'];
// GET TOKEN
$token = xmlrpc(url($this->endpoint, array('absolute' => TRUE)), array('user.token' => array()), $this->headers);
//INSERT TOKEN INTO HEADERS
$options['headers']['X-CSRF-Token'] = $token['token'];
//RETRIEVE FILE
$file= xmlrpc($settings['server'], Array('file.retrieve' => Array(Array("fid"=>$fid),Array("file_contents"=> 'true'),Array("image_styles"=>'true') )),$options);
services_basic_authモジュール( https://drupal.org/project/services_basic_auth )を使用して、drupalサービスモジュールの基本認証を有効にすることができます。
Services_basic_authモジュールをインストールした後、Structure-> Services-> Editに移動して有効にする必要があります。
これで、基本認証ヘッダーを使用してノードを作成できます。