# Social identities

*identities* contains the user info retrieved from social sign-in (i.e., sign-in with a social connector). Each user's *identities* is stored in an individual JSON object.

The user info varies by social identity provider (i.e., social network platform), and it typically includes the following:

* *ProviderName* of the identity provider, such as "facebook", "google", or "wechat"
* User's unique identifier for this provider
* User's name
* User's verified email
* User's avatar

The user's account may be linked to multiple social identity providers via social sign-in; the corresponding user info retrieved from these providers will be stored in the *identities* object.

Sample *identities* from a user who signed in with both WeChat and Facebook:

```
{
        "provider_type": "social",
        "provider_name": "FACEBOOK",
        "social_identity_ref": "",
        "username": ""
      },
{
        "provider_type": "social",
        "provider_name": "WECHAT",
        "social_identity_ref": "",
        "username": ""
      }

```

{% hint style="info" %}
INFO

The *identities* can NOT be updated using "Admin Console" or "Management API".
{% endhint %}

Every time the user signs in with a social connector, their *identities* will be automatically imported or updated from the identity provider.

## **Custom Fields**

*custom\_fields* stores additional user info not listed in the pre-defined user properties.

You can use *custom\_data* to do the following things:

* Record whether specific actions have been done by the user, such as having seen the welcome page.
* Store application-specific data in the user profile, such as the user's preferred language and appearance per application.
* Maintain other arbitrary data related to the user.

Sample *custom\_data* from an admin user in Auth:

```
{
 "customDataFoo": {
   "foo": "foo"
 },
 "customDataBar": {
   "bar": "bar"
 }
}

```

Each user's *custom\_field* is stored in an individual JSON object.

**DO NOT PUT SENSITIVE DATA IN&#x20;*****CUSTOM\_DATA***

You may fetch a user profile containing *custom\_field* using Management API and send it to the frontend apps or external backend services. Therefore, putting the sensitive information in *custom\_field* may cause data leaks.

If you still want to put the sensitive information in *custom\_field*, we recommend encrypting it first. Only encrypt/decrypt it in a trusted party like your backend services, and avoid doing it in the frontend apps. These will minimize the loss if your users' *custom\_field* is leaked by mistake.

You can update the user's *custom\_data* using Admin Console or Management API,

**UPDATE CAREFULLY**

Updating a user's *custom\_field* will completely overwrite its original content in the storage.

For example, if your input of calling update *custom\_field* API looks like this (suppose that the original *custom\_field* is previous shown sample data):

```
{
 "customDataBaz": {
   "baz": "baz"
 }
}
then new custom_data value after updating should be:
{
 "customDataBaz": {
   "baz": "baz"
 }
}

```

That is, the updated field value has nothing to do with the previous value.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://authdocs.skill-mine.com/licentio-documentation/social-identities.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
