0

Drupal 7 と Services 3.x (3.10) を使用しています。/admin/structure/services ページで、エンドポイントとカスタム モジュールを作成しました。

function webServices_services_resources() {
$api = array(
'customers' => array(
    'retrieve' => array(
     'help' => 'Retrieves posted blogs',
     'callback' => '_webServices_retrieve',
     'access arguments' => array('access content'),
     'access arguments append' => FALSE,
     'args' => array(
         array(
           'name' => 'id',
           'type' => 'int',
           'description' => 'The id of the note to get',
           'source' => array('path' => '0'),
           'optional' => FALSE,
         ),
       ),
      ),
    ),
  );
return $api;
}

ここで、base_url/endpoint/user/login.json (ユーザー名とパスワードを渡す) に POST 要求を行い、session_name と session_id を取得します。

次のヘッダーを使用して (たとえば) base_url/endpoint/customers/1.json を呼び出した場合:

User-Agent: Fiddler
Content-Type: application/json
Host: liburna3.alpha-si.org
Cookie: SESS738851ba4e98ab1f17a7252513dc0719=hy5xVjlDzjIbXz-nlwEV4GywbAPAPL0d_aFGhtIRWzw

エラー 403 が表示されます: ユーザー xxxxxxxxx のアクセスが拒否されました

何が問題ですか?

4

1 に答える 1

1

base_url/endpoint/system/connect を呼び出して認証状態を確認します。

ログインしていない (またはヘッダーが正しくない) 場合は、次のように返されます。

"sessid": "PfG79I6elMMYln8nyftReLOY0d5So7O0C3LRIdbOeMo",
  "session_name": "SESS74282c529439441e18b575b0e6fe308f",
  "user": {
    "uid": 0,
    "hostname": "2a02:8388:1580:2500:7b:3322:23a4:c902",
    "roles": {
      "1": "anonymous user"
    },
    "cache": 0,
    "timestamp": 1460891635
  }
}

ログインしている場合は、結果のユーザー プロパティに完全なユーザーデータが返されます。

ほぼすべての drupal サービス呼び出し用のテスト サイトをセットアップしました。> basepath と endpoint を入力して、バックエンドをテストできます。ここで見つけてください => http://www.drupalionic.org/explore/

データを入力し、[リソース] -> [サービス 3.x] -> [システム] に移動して、[接続] タブをクリックします。

また、ここで drupal サービス用のフル機能の angular lib を見つけることができます => https://github.com/BioPhoton/ng-drupal-7-services

于 2016-04-17T11:21:33.050 に答える