githubではWP-API/OAuth1 の説明に従って、WP-API用のOAuthクライアントをセットアップしました。
その後、ユーザー登録日などの非公式のメタデータを含め、すべてのサイトのコンテンツがAPIを介して利用できることに気づいたのは残念です。私はこれが欲しくないです。
OAuthクライアントのみを許可するようにJSON APIを制限する方法
これは私がやったことですが、私はそれがもっと良いかもしれないと感じます。一つには、HTTP 500 ... 403という結果になるでしょう。
add_filter( 'json_authentication_errors', function( $authenticated ) {
if( !$authenticated ) {
return new WP_Error('Access Denied');
}
}, 99 );
(私はこれがBasic Authにもうまくいくことを理解しています)
さまざまなクラスのさまざまなコード領域でエラーを処理する必要があったため、認証ハンドラでグローバルエラーを作成しました。
function json_myauthname_auth_handler( $user = false) {
global $wp_json_myauthname_auth_error;
$wp_json_myauthname_auth_error = null;
...
}
その後、どこかでエラーが発生した場合は、適切なエラーコードとメッセージを設定します。
$wp_json_myauthname_auth_error = new WP_Error( 'json_login_failed', __( "We didn't recognize your email address or password. Please try again." ), array( 'status' => 401 ) );
それからあなたが必要としているのは認証エラーのチェックを処理するためのフィルタだけです。
// Error handling
function json_myauthname_auth_error( $error ) {
// Passthrough other errors
if ( ! empty( $error ) ) {
return $error;
}
}
add_filter( 'json_authentication_errors', 'json_myauthname_auth_error' );
あなたがそれのすべてを必要としないならば、あなたはただ適切なエラーを返すことができました:
return new WP_Error( 'json_login_failed', __( "We didn't recognize your email address or password. Please try again." ), array( 'status' => 401 ) );