# Was ist das Problem mit meiner cURL-Anfrage?

**URL:** <https://meta.discourse.org/t/whats-the-issue-with-my-curl-request/303708>\
**Category:** Development\
**Tags:** rest-api\
**Created:** [13. April 2024 um 22:38 UTC](https://meta.discourse.org/t/whats-the-issue-with-my-curl-request/303708 "2024-04-13T22:38:21Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)\
**Post date:** [14. April 2024 um 00:36 UTC](https://meta.discourse.org/t/whats-the-issue-with-my-curl-request/303708/5 "2024-04-14T00:36:20Z")

</div>

> [@Ben\_Sutton](#):
>
> Fehlt mir etwas?

Wenn ich nichts falsch mache, ist die Anfrage an `\"/groups/${group_id}/members.json\"` irgendwie unintuitiv. Sie scheint auch nicht dokumentiert zu sein _und_ kann nicht im Netzwerk-Tab des Browsers eingesehen werden, wenn das Discourse-Formular “Benutzer hinzufügen” auf der Gruppenseite abgeschickt wird. Auch hier könnte ich etwas falsch machen.

Auf jeden Fall ist der Pfad für die Anfrage `/groups/${group_id}/members.json`, wobei die numerische ID der Gruppe für `group_id` eingesetzt wird. ~~Der Body der Anfrage benötigt einen `group_id`-Parameter, aber dieser Parameter muss auf den `name` der Gruppe gesetzt werden. Die Argumente sehen dann etwa so aus:~~

```php
$group_id = 45;
$group_name = 'publishers';
$args = array(
    'method' => 'DELETE', // oder 'PUT'
	'body' => array(
		// 'group_id' => $group_name, edit: dieser Parameter wird nicht benötigt, ich bin mir nicht sicher, was los war, als ich ihn getestet habe.
		'usernames' => 'sally,Ben',
	)
);

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

```

Wenn Sie das [WP Discourse](https://github.com/discourse/wp-discourse)-Plugin auf Ihrer WordPress-Site konfiguriert haben, können Sie seine statische [`discourse_request`](https://github.com/discourse/wp-discourse/blob/main/lib/plugin-utilities.php#L469)-Hilfsfunktion verwenden, um die Verwendung von curl zu vermeiden. Beachten Sie, dass ich auf die statische Funktion im `plugin-utilities`-File verlinkt habe, aber der Namespace, den Sie für externe Anfragen verwenden müssen, stammt von [https://github.com/discourse/wp-discourse/blob/main/lib/utilities.php](https://github.com/discourse/wp-discourse/blob/main/lib/utilities.php).

```php
use WPDiscourse\\Utilities\\Utilities as DiscourseUtilities;

function zalg_add_users_to_group() {
	$group_id = 45;
    $group_name = 'publishers';
    $method = 'PUT'; // 'PUT' zum Hinzufügen von Benutzern; 'DELETE' zum Entfernen von Benutzern
	$args = array(
		'method' => $method,
		'body' => array(
			// 'group_id' => $group_name, edit: dieser Parameter wird nicht benötigt
			'usernames' => 'sally,Ben',
		)
	);
	$response = DiscourseUtilities::discourse_request( "/groups/${group_id}/members.json", $args );
    // die Antwort zurückgeben, protokollieren oder verarbeiten
}

```

Wenn Sie WordPress als SSO-Provider für Discourse verwenden, gibt es eine Hilfsfunktion, mit der Sie _einen_ Benutzer zu einer oder mehreren Gruppen hinzufügen können:

```php
function zalg_sso_add_users_to_group() {
    $user_id = 1; // die WordPress-Benutzer-ID des Benutzers
    $group_names = 'foo,bar,baz'; // ein oder mehrere durch Kommas getrennte Gruppennamen, ohne Leerzeichen nach den Kommas!
    DiscourseUtilities::add_user_to_discourse_group($user_id, $group_names);
}

```

Um mehrere Benutzer zu einer einzigen Gruppe hinzuzufügen, müssten Sie immer noch die `discourse_request`-Methode verwenden, die im ersten Codebeispiel enthalten ist.

---

_[View the full topic](https://meta.discourse.org/t/whats-the-issue-with-my-curl-request/303708)._
