Та же проблема, что и у вас ... Так как не очень хорошие учебники, иногда это сложно, так что надеюсь, что это кому-нибудь поможет.
Решение:
Вы должны дать разрешения oauth своим ресурсам в своем определении конечной точки, в my_module_default_services_endpoint (). Допустим, вы хотите включить ресурсного пользователя через oauth. Обычно у вас будет:
...
$endpoint->resources['user'] = array(
'operations' => array(
'ta_create' => array('enabled' => 1, ),
),
'actions' => array(
'login' => array('enabled' => 1, ),
'logout' => array('enabled' => 1, ),
'ta_register' => array('enabled' => 1, ),
),
);
...
Таким образом, вы должны авторизовать свои ресурсы следующим образом (user_info - это разрешение, необходимое для доступа к этому ресурсу):
...
$endpoint->resources['user'] = array(
'operations' => array(
'ta_create' => array('enabled' => 1, 'services_oauth' => array('credentials' => 'token', 'authorization' => 'user_info', ), ),
),
'actions' => array(
'login' => array('enabled' => 1, ),
'logout' => array('enabled' => 1, 'services_oauth' => array('credentials' => 'token', 'authorization' => 'user_info', ), ),
'ta_register' => array('enabled' => 1, ),
),
);
...
Те, которые вы активируете через «services_oauth», будут доступны только через oauth. Мне интересно, можно ли смешивать службы доступа oauth и обычные службы oauth.
Как я нашел решение:
Если вы включите отладку служб, вы увидите следующее предупреждение PHP:
Примечание: неопределенный индекс: services_oauth en _services_oauth_authenticate_call () (стр. 26 из C: /.../ services_oauth.inc).
Если вы перейдете к _services_oauth_authenticate_call () в services_oauth.inc и напечатаете трассировку стека (спасибо http://php.net/manual/en/function.debug-print-backtrace.php):
ob_start();
debug_print_backtrace();
$trace = ob_get_contents();
ob_end_clean();
watchdog('my_module', 'StackTrace: %st', array('%st' => $trace,), WATCHDOG_DEBUG);
Тогда вы увидите, что * $ method ['endpoint'] ['services_oauth']; * не установлен. Поэтому вы должны установить его в my_module_default_services_endpoint ()