6

基本認証に問題があります。

次の URL を使用して Postman (chrome プラグイン) で GET 要求を送信しようとしています: http://_MY_WEBSITE_URL_/wp-json/wp/v2/users/3

ユーザー名とパスワード フィールドには、サイトの管理者ユーザーの資格情報が入力されます。

私が得るエラー:

{
    "code": "rest_user_cannot_view",
    "message": "Sorry, you cannot view this resource.",
    "data": {
        "status": 401
    }
}

別のWebサイトからwp_remote_requestを使用して基本認証を試み、CURLも使用しましたが、結果は毎回同じです。

ID 3 のユーザーが存在します。確認しました。すべてのユーザーをリストしたい場合は、投稿を作成したユーザーのみを取得します。

必要なプラグインを有効にしました: WP REST APIJSON Basic Authentication

私のワードプレスのバージョン: 4.4.2

4

3 に答える 3

3

最後に、解決策を見つけました。いくつかの新しいオプションを.htaccessファイルに手動で追加する必要がありましたが、プラグインは作成しませんでした。

コード:

# BEGIN WP BASIC Auth
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /PluginTest/
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
</IfModule>
# END WP BASIC Auth
于 2016-04-08T12:19:26.190 に答える
2

問題はサーバーからユーザーデータを取得することではないと思いますが、このエラーコードは認証の問題であり、このユーザー機能があるか、ロールが管理者ではない可能性があります

詳細ビュー用

wp-content/plugins/rest-api/lib/endpoints/class-wp-rest-users-controller.php

public function get_item_permissions_check( $request ) {

    $id = (int) $request['id'];
    $user = get_userdata( $id );
    $types = get_post_types( array( 'public' => true ), 'names' );

    if ( empty( $id ) || empty( $user->ID ) ) {
        return new WP_Error( 'rest_user_invalid_id', __( 'Invalid resource id.' ), array( 'status' => 404 ) );
    }

    if ( get_current_user_id() === $id ) {
        return true;
    }

    if ( 'edit' === $request['context'] && ! current_user_can( 'list_users' ) ) {
        return new WP_Error( 'rest_user_cannot_view', __( 'Sorry, you cannot view this resource with edit context.' ), array( 'status' => rest_authorization_required_code() ) );
    } else if ( ! count_user_posts( $id, $types ) && ! current_user_can( 'edit_user', $id ) && ! current_user_can( 'list_users' ) ) {
        return new WP_Error( 'rest_user_cannot_view', __( 'Sorry, you cannot view this resource.' ), array( 'status' => rest_authorization_required_code() ) );
    }

    return true;
}
于 2016-04-07T10:10:56.480 に答える