web-dev-qa-db-ja.com

サービス3とセッション認証

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「認証が必要です」

これをトラブルシューティングする最良の方法は何ですか?この方法でセッションを使用することもできますか?

4
user379468

セッション認証は、基本認証とは異なります。

セッション認証では、POSTリクエストをENDPOINT/user/loginに送信することにより、ログインする必要があります。セッションヘッダー情報が返されます。今後使用するために保存し、すべてとともに送信する必要があります。リクエスト。

7
Kyle Browning

ご助力ありがとうございます。ようやく、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);
9
Mauro Sardu

services_basic_authモジュール( https://drupal.org/project/services_basic_auth )を使用して、drupalサービスモジュールの基本認証を有効にすることができます。

Services_basic_authモジュールをインストールした後、Structure-> Services-> Editに移動して有効にする必要があります。

enter image description here

これで、基本認証ヘッダーを使用してノードを作成できます。

0
user23710