add3PID method
This API endpoint uses the User-Interactive Authentication API.
Adds contact information to the user's account. Homeservers should use 3PIDs added through this endpoint for password resets instead of relying on the identity server.
Homeservers should prevent the caller from adding a 3PID to their account if it has already been added to another user's account on the homeserver.
auth
Additional authentication information for the
user-interactive authentication API.
clientSecret
The client secret used in the session with the homeserver.
sid
The session identifier given by the homeserver.
Implementation
Future<void> add3PID(
String clientSecret,
String sid, {
AuthenticationData? auth,
}) async {
final requestUri = Uri(path: '_matrix/client/v3/account/3pid/add');
final request = Request('POST', baseUri!.resolveUri(requestUri));
request.headers['authorization'] = 'Bearer ${bearerToken!}';
request.headers['content-type'] = 'application/json';
request.bodyBytes = utf8.encode(
jsonEncode({
if (auth != null) 'auth': auth.toJson(),
'client_secret': clientSecret,
'sid': sid,
}),
);
final response = await httpClient.send(request);
final responseBody = await response.stream.toBytes();
if (response.statusCode != 200) unexpectedResponse(response, responseBody);
final responseString = utf8.decode(responseBody);
final json = jsonDecode(responseString);
return ignore(json);
}