我的 cURL 请求有什么问题?

除非我做错了什么,否则对 \"/groups/${group_id}/members.json\" 的请求有点不直观。它似乎也没有被记录下来,并且在提交群组页面上的 Discourse“添加用户”表单时,无法在浏览器的网络选项卡中查看。同样,我可能做错了什么。

无论如何,请求的路径是 /groups/${group_id}/members.json,其中 group_id 被替换为群组的数字 ID。 请求正文需要一个 group_id 参数,但该参数需要设置为群组的 name。因此,参数如下:

$group_id = 45;
$group_name = 'publishers';
$args     = array(
    'method' => 'DELETE', // or 'PUT'
	'body'   => array(
		// 'group_id'  => $group_name, edit: this param isn't needed, not sure what was going on when I was testing it.
		'usernames' => 'sally,Ben',
	)
);

// path:
/groups/${group_id}/members.json

如果您在 WordPress 网站上配置了 WP Discourse 插件,则可以使用其静态 discourse_request 帮助函数,避免使用 curl。请注意,我链接到 plugin-utilities 文件中的静态函数,但您需要为外部请求使用的命名空间来自 https://github.com/discourse/wp-discourse/blob/main/lib/utilities.php。

use WPDiscourse\\Utilities\\Utilities as DiscourseUtilities;

function zalg_add_users_to_group() {
	$group_id = 45;
    $group_name = 'publishers';
    $method = 'PUT'; // 'PUT' to add users; 'DELETE' to remove users
	$args     = array(
		'method' => $method,
		'body'   => array(
			// 'group_id'  => $group_name, edit: this param isn't needed
			'usernames' => 'sally,Ben',
		)
	);
	$response = DiscourseUtilities::discourse_request( "/groups/${group_id}/members.json", $args );
    // return, log, or handle the response
}

如果您将 WordPress 用作 Discourse 的 SSO 提供商,则有一个帮助函数允许您将 一个 用户添加到一组或多组中:

function zalg_sso_add_users_to_group() {
    $user_id = 1; // the user's WordPress user ID
    $group_names = 'foo,bar,baz'; // one or more comma separated group names, with no spaces after commas!
    DiscourseUtilities::add_user_to_discourse_group($user_id, $group_names);
}

要将多个用户添加到单个组,您仍然需要使用第一个代码示例中的 discourse_request 方法。

3 个赞